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>
しかし、ホーム コントローラーのアクション (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 属性を指定しておらず、すべて機能しています。