【发布时间】:2016-05-16 20:04:38
【问题描述】:
我已经为MVC 3 和MVC 4 研究了有关此主题的答案,我希望找到 MVC 5 的解决方案。我有一个通过 ajax 加载部分视图的视图。在视图中,我在其中定义了所有 javascript 逻辑 (@section Scripts),因为我的部分视图中不能有任何逻辑。问题是,在我的部分观点中,我希望在成功时调用在视图中定义的 javascript 函数。
以下是我的看法和部分看法
MyView.cshtml
@section Scripts
{
@Scripts.Render("~/plugins/myplugins")
<script>
function callFunctionOutsideThisPartialView() {
//... This doesn't get called
}
</script>
}
MyPartialView.cshtml
@using (Ajax.BeginForm("MyAction", "MyController",
new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divForPartialView",
OnSuccess = "callFunctionOutsideThisPartialView()"
}, new { @class = "form-inline" }))
{
// Partial View here
}
在 MVC 5 中访问局部视图之外的 javascript 函数的正确方法是什么?
【问题讨论】:
-
局部视图的思想是重用html代码。无论您使局部视图渲染变得多么复杂。所有的局部视图最终都会被放入你的布局中,呈现为 1 段 html。当您的 html 在浏览器中呈现时,这就是您的 js 发挥作用的地方。只要您的局部视图引用的 js 函数最终会加载到您的页面中。你应该没事
-
我试过了,但是 OnSucess 中的 javascript 没有被调用,因为控制台说该函数不存在。
-
@Ji_in_coding 是正确的。除非您粘贴的示例代码不是您使用的实际架构,否则应在全局范围内声明函数
callFunctionOutsideThisPartialView()。
标签: javascript jquery ajax asp.net-mvc