MVC 在局部视图中使用 JS
MVC using JS inside partial view
在我的主视图中,我有 ajax 个操作链接
例如
@Ajax.ActionLink("Update Hours", "companyhours", "business",
new { Id = ViewBag.Id }, new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "divCurrentView" })
控制器内部
public ActionResult CompanyHours(string Id)
{ ... return PartialView("UpdateCompanyHours", model);}
视图在点击时加载
部分视图 "UpdateCompanyHours.cshtml" 我有
@model CompanyHoursVM
@{Layout = null; }
@using (Ajax.BeginForm("CompanyHours", new AjaxOptions { UpdateTargetId = "presult", HttpMethod = "POST", InsertionMode = InsertionMode.Replace }))
{
@Html.ValidationSummary(true)
@Html.AntiForgeryToken()
// i have textboxes and a button - everything loads fine
@Html.CheckBoxFor(model => model.Open247, new { @class = "Time24hrs"})
}
这是问题所在:
我想在我的主视图中添加我的 js 文件。在主视图页面底部添加代码:
@section Scripts
{
<script src="~/Scripts/myjs.js"></script>
}
甚至没有@section Scripts 标签
js文件很简单。第一个警报被执行但点击它没有
(function () {
$(function () {
alert("alert1");
$('.Time24hrs').click(function () {
alert("alert2");
});
});
})();
js没有被识别。但是,如果我在局部视图中添加 js 文件,它就可以正常工作
如何在主视图中加载js文件并在局部视图中使用js文件?
我打赌 ajax 调用 return 您的部分异步完成是在调用主页的加载函数之后,在这种情况下,没有机会按照您的方式设置事件处理程序因为该元素尚未添加到 dom。当您的部分加载时,您需要以某种方式通知。
当您点击 "Update Hours" link 时,ajax 代码动态地将新的 DOM 元素注入当前 dom(部分标记看法)。但是您的点击事件已注册到现有元素(页面加载时的当前元素)。没有为这些新 dom 元素注册的点击事件处理程序。
使用jQueryon
方法绑定点击事件。使用 on
方法,您可以为 DOM
的 当前和未来元素 注册事件
这应该有效。
$(function () {
$(document).on("click",".Time24hrs",function () {
alert("alert2");
});
});
在我的主视图中,我有 ajax 个操作链接
例如
@Ajax.ActionLink("Update Hours", "companyhours", "business",
new { Id = ViewBag.Id }, new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "divCurrentView" })
控制器内部
public ActionResult CompanyHours(string Id)
{ ... return PartialView("UpdateCompanyHours", model);}
视图在点击时加载
部分视图 "UpdateCompanyHours.cshtml" 我有
@model CompanyHoursVM
@{Layout = null; }
@using (Ajax.BeginForm("CompanyHours", new AjaxOptions { UpdateTargetId = "presult", HttpMethod = "POST", InsertionMode = InsertionMode.Replace }))
{
@Html.ValidationSummary(true)
@Html.AntiForgeryToken()
// i have textboxes and a button - everything loads fine
@Html.CheckBoxFor(model => model.Open247, new { @class = "Time24hrs"})
}
这是问题所在:
我想在我的主视图中添加我的 js 文件。在主视图页面底部添加代码:
@section Scripts
{
<script src="~/Scripts/myjs.js"></script>
}
甚至没有@section Scripts 标签
js文件很简单。第一个警报被执行但点击它没有
(function () {
$(function () {
alert("alert1");
$('.Time24hrs').click(function () {
alert("alert2");
});
});
})();
js没有被识别。但是,如果我在局部视图中添加 js 文件,它就可以正常工作
如何在主视图中加载js文件并在局部视图中使用js文件?
我打赌 ajax 调用 return 您的部分异步完成是在调用主页的加载函数之后,在这种情况下,没有机会按照您的方式设置事件处理程序因为该元素尚未添加到 dom。当您的部分加载时,您需要以某种方式通知。
当您点击 "Update Hours" link 时,ajax 代码动态地将新的 DOM 元素注入当前 dom(部分标记看法)。但是您的点击事件已注册到现有元素(页面加载时的当前元素)。没有为这些新 dom 元素注册的点击事件处理程序。
使用jQueryon
方法绑定点击事件。使用 on
方法,您可以为 DOM
这应该有效。
$(function () {
$(document).on("click",".Time24hrs",function () {
alert("alert2");
});
});