我有以下表格,我想要做的是,当人们点击搜索按钮时, 请求将文件发送到服务器,服务器将返回一组新结果,我将重新呈现div以显示新结果
@using (Ajax.BeginForm("Search", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "DivToUpdate" }))
{
<div style="margin: 10px 50px 5px 50px;">
@Html.TextBox("instrument", (string)ViewBag.DefaultInstrumentStr)
<input type="submit" value="Search" />
</div>
}
<div id="DivToUpdate" style="width: 100%; display: none;">
@if (Model != null)
{
@Html.Partial("_InstrumentList", @Model);
}
else
{
<span>Loading ....</span>
}
</div>
这是我的控制器实现:
public ActionResult Search(string instrument)
{
// ... base on the input perform certain action to generate a list of result
return PartialView("_InstrumentList", instruments);
}
当我运行它时,点击搜索后,我只会在浏览器中看到部分视图,数据不会更新div。
任何人都知道我做错了什么? 感谢。
答案 0 :(得分:1)
任何人都知道我做错了什么?
您忘记将jquery.unobtrusive-ajax.js
脚本引用到您的网页:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
答案 1 :(得分:1)
您必须引用一些脚本:
MVC3中的(将UnobtrusiveJavaScriptEnabled设置为true):
jquery.unobtrusive-ajax.js
MVC2和MVC3中的(设置UnobtrusiveJavaScriptEnabled为false):
MicrosoftMvcAjax.js
对于不同的人,你可以看一下:Unobtrusive Client Validation in ASP.NET MVC 3
答案 2 :(得分:0)
您要更新的div
必须位于Ajax.BeginForm
括号内。