私は、AJAXを使用してフォーム上で編集/表示している親テーブルの子テーブルを更新するASP.Net MVCページを持っています。私はこれが非常に標準的なパターンだと確信していますが、私はプラットフォームに慣れていません。MVC3のAjax.ActionLinkは、HTML.ActionLinkと同じように動作しているようです。
私は、次のしている私のページで:
<ul id="see_also_list">
<!-- this part is in a partial -->
@if (0 < Model.RelatedCategories.Count)
{
foreach (string cat in Model.RelatedCategories.Keys)
{
<li>@Html.ActionLink(cat, "Details", new { id = Model.RelatedCategories[cat] })
[@Ajax.ActionLink("remove", "RemoveSeeAlso", new { id=Model.Id, RelatedCategory = Model.RelatedCategories[cat] }, new AjaxOptions{ Confirm = "This will remove this item", HttpMethod = "POST", UpdateTargetId = "see_also_list" })]</li>
}
}
else
{
<li>No related Categories listed.</li>
}
<!-- end of partial -->
</ul>
@using (Ajax.BeginForm("AddSeeAlso", new AjaxOptions { UpdateTargetId = "see_also_list", InsertionMode = InsertionMode.Replace }))
{
@Html.HiddenFor(model => model.Id)
@Html.DropDownList("alsoCategories", Model.LoadCategoryDropdown())
<input type="submit" value="Add" />
}
私が持っている問題は、AjaxフォームとAjax.ActionLink両方がHTML.ActionLinkと同じように振る舞うように見えるということである - 彼らがナビゲートしていますフォーム上のアクションに直接ブラウザ。 "Confirm" AjaxOptionへのリンクが有効になっていると、どのような種類の確認ボックスも表示されません。私は、これが動作するために必要な配管の重要な部分が欠けているか、組み込みのヘルパーメソッドが望みどおりに役に立たず、余分なJavaScriptを手動で追加する必要があると思います。
Ajax.ActionLinkによって作成されたHTMLは次のようになります。私は "jquery.validate.min.js"、 "jquery.validate.unobtrusive.min.js" を含めています
<ul id="see_also_list">
<li><a href="/Category/Details/2">Advice and Information </a>
[<a data-ajax="true" data-ajax-confirm="This will remove this item" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#see_also_list" href="/Category/RemoveSeeAlso/1?RelatedCategory=2">remove</a>]</li>
</ul>
、「MicrosoftAjax 「.debug.js」と「MicrosoftMVCAjax.debug.js」となります。
パーフェクト、それはまさに問題でした。 – glenatron