Dus*_*ski 2 ajax asp.net-mvc ajax.beginform razor
在部分视图中提交表单时,如何防止页面重新加载?有很多例子,但似乎没有一个例子对我有用。这就是我所拥有的。局部视图(Razor)调用此:
@using (Ajax.BeginForm("SaveReply", "Home", null, new AjaxOptions { HttpMethod = "Post" }, new { target = "_self" }))
{
<div class="input-group wall-comment-reply" style="width:100%">
@Html.Hidden("eventid", @item.EventID)
<input name="txtReply" type="text" class="form-control" placeholder="Type your message here...">
<span class="input-group-btn">
<button class="btn btn-primary" id="btn-chat" type="submit">
<i class="fa fa-reply"></i> Reply
</button>
</span>
</div>
}
Run Code Online (Sandbox Code Playgroud)
然后在控制器中有我的操作方法:
[HttpPost]
public void SaveReply(string txtReply, string eventid)
{
//some code
}
Run Code Online (Sandbox Code Playgroud)
控制器动作被触发,但是之后它会自动重定向到localhost / home / SaveReply
也许问题在于此局部视图是从字符串渲染的。我从以下代码中获取了代码:
如何在ASP.NET MVC 3中将Razor View呈现为字符串?
除了其他我尝试过的东西:
我将不胜感激任何帮助。
我发现了问题。
似乎您需要引用Unobtrusive脚本。只需从NuGet安装它们:
安装包Microsoft.jQuery.Unobtrusive.Ajax
然后从调用部分视图的视图中引用它:
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
奇迹般地,它无需任何其他更改即可工作。可以在这里找到更多说明:
和这里:
[ 为什么UnobtrusiveJavaScriptEnabled = true禁用我的Ajax正常工作?
如果您在MVC 3及更高版本中使用Ajax。*助手,则似乎需要使用它。
| 归档时间: |
|
| 查看次数: |
2553 次 |
| 最近记录: |