-1

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 属性を指定しておらず、すべて機能しています。

4

1 に答える 1