为什么AjaxForm不适合我?

时间:2012-05-31 07:28:21

标签: c# ajax asp.net-mvc-3

我有以下表格,我想要做的是,当人们点击搜索按钮时, 请求将文件发送到服务器,服务器将返回一组新结果,我将重新呈现div以显示新结果

@using (Ajax.BeginForm("Search", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "DivToUpdate" }))
        {
            <div style="margin: 10px 50px 5px 50px;">
                @Html.TextBox("instrument", (string)ViewBag.DefaultInstrumentStr)
                &nbsp;&nbsp;&nbsp;
                <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。

任何人都知道我做错了什么? 感谢。

3 个答案:

答案 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括号内。