1

我有以下表格,我想做的是,当人们点击搜索按钮时,一个请求将提交给服务器,服务器将返回一组新的结果,我将重新渲染 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。

有人知道我做错了什么吗?谢谢。

4

3 回答 3

1

您必须引用一些脚本:

在 MVC3 中(设置 UnobtrusiveJavaScriptEnabled 为真):

jquery.unobtrusive-ajax.js

在 MVC2 和 MVC3 中(设置 UnobtrusiveJavaScriptEnabled false):

MicrosoftMvcAjax.js

对于不同之处,您可以查看:Unobtrusive Client Validation in ASP.NET MVC 3

于 2012-05-31T07:55:37.133 回答
1

有人知道我做错了什么吗?

您忘记将jquery.unobtrusive-ajax.js脚本引用到您的页面:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
于 2012-05-31T07:32:00.050 回答
0

您尝试更新的div必须在Ajax.BeginForm括号内。

于 2012-05-31T07:32:14.950 回答