Fra*_*ega 10 c# asp.net-mvc asp.net-ajax partial-views
我正在使用类似的东西更新部分视图的div:
<% using (Ajax.BeginForm("Action", "Controller",
new { id=Model.id },
new AjaxOptions
{
UpdateTargetId = "divId",
InsertionMode = InsertionMode.InsertAfter,
}))
{ %>
Run Code Online (Sandbox Code Playgroud)
并且它的工作正常,返回的视图被添加到div,但是我现在需要在帖子成功时执行javascript,所以我想:"简单,只需添加 OnSuccess = "MyJsFunc()"" AjaxOptions,但是在这之后,它停止了工作!现在页面被刷新,只返回部分视图:(,我甚至试过一个简单的Alert("Hi"),它也没有工作..我怎么能让这个工作?
(顺便说一句,我认为这可能是一个重复的/sf/ask/139632811/但是这个问题被废弃了回答)
Dar*_*rov 16
是不是以正确的方式做到这一点(毕竟我们在2010年)?转储它所属的MS AJAX以及Ajax.*依赖它并编写正确代码的所有帮助程序.虽然在经典的webforms中使用MS AJAX可能是合理的,因为UpdatePanels等...今天在一个新的ASP.NET MVC应用程序中执行它,特别是在微软完全接受jQuery之后,似乎是一个坏主意.
所以在这之后的咆哮是我的建议:
<% using (Html.BeginForm("Action", "Controller", new { id = Model.id }) { %>
Run Code Online (Sandbox Code Playgroud)
然后使用jquery在一个单独的文件中不引人注意地附加提交处理程序:
$(function() {
$('form').submit(function() {
$.ajax({
url: this.action,
type: this.method,
success: function(result) {
// feel free to execute any code
// in the success callback
$('#result').html(result);
}
});
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
或使用优秀的jquery表单插件:
$(function() {
$('form').ajaxForm(function(result) {
// feel free to execute any code
// in the success callback
$('#result').html(result);
});
});
Run Code Online (Sandbox Code Playgroud)
这种方法的好处:
奖金福利:没有头痛.
我一直环顾四周,找到了答案:
为AjaxOptions分配Javascript函数OnSuccess属性引发错误 - ASP.NET MVC(未选择答案)
引用Atzu
如果必须将任何参数传递给OnSuccess事件,则可能必须以这种方式编写函数.
OnSuccess = "function(){exampleFunction('" + param1 + "');}
Run Code Online (Sandbox Code Playgroud)
它对我有用!
| 归档时间: |
|
| 查看次数: |
13307 次 |
| 最近记录: |