AjaxOptions 定义如下所示:
@using VaultSearch.Models
@model UserInfo
@{
ViewBag.Title = "Vault Search Engine";
AjaxOptions ajaxOptionsDocGroupsForm = new AjaxOptions
{
UpdateTargetId = "divSearchFieldRows",
Url = Url.Action("GetDocGroupSearchFields"),
LoadingElementId = "loadingSearchFields",
LoadingElementDuration = 5000,
};
}
使用它的 Ajax.BeginFrom 助手能够显示加载元素。但是似乎没有调用应该返回 PartialVeiwResult 的 URL.Action“GetDocGroupSearchFields”。
从看起来像这样:
@using (Ajax.BeginForm(ajaxOptionsDocGroupsForm))
{
@Html.Action("GetDocumentGroups", new { userId = Model.Id })
<button type="submit">Get Search Fields >></button>
}
呈现的html是这样的:
<div class="docGroupsWrapper">
<form action="/" data-ajax="true" data-ajax-loading="#loadingSearchFields" data-ajax-loading-duration="5000" data-ajax-mode="replace" data-ajax-update="#divSearchFieldRows" data-ajax-url="/Home/GetDocGroupSearchFields" id="form0" method="post">
<b>Document Groups:</b>
<select id="DocGroupItems" name="DocGroupItems">
<option value="">--Select One--</option>
<option value="3">AuthLetters</option>
<option value="4">SummaryVouchers</option>
<option value="5">ExplanationOfBenefits</option>
</select>
<button type="submit">Get Search Fields >></button>
</form>
<div id="divSearchFields" class="searchFieldsWrapper">
<div id="loadingSearchFields" class="load" style="display:none">
<p>loading Document Search Fields...</p>
</div>
<div id="divSearchFieldRows">
<span class="instructions">
Choose a Document Group from above to see columns to search with. >>
</span>
</div>
</div>
但它只是没有点击 Home Controller 中的 Action:GetDocGroupSearchFields,它现在看起来像这样:
public PartialViewResult GetDocGroupSearchFields(int docGroupId)
{
List<DocumentGroupField> searchFields = new List<DocumentGroupField>();
return PartialView();
}
返回的部分视图就是这样的:
@using VaultSearch.Models
@model List<DocumentGroupField>
<b>Search Fields!!!</b>
所以,我唯一真正需要做的就是加载 div。
我从 Adam Freeman 的 APRESS 书:Pro ASP.Net MVC 4, Chapter 21 buildup 中获得了所有这些概念。
我在这里做几乎同样的事情。无法弄清楚为什么它不起作用。Adam 在他的示例中没有指定任何后置动词或 ChildAction 属性,并且一切正常。