2012-02-27 5 views
1

私は、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」となります。

答えて

2

私はこれがない

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 

(通常は自分の_layoutページにリンク)あなたはjQueryの控えめなライブラリへのリンクが欠けていると思う、誰もdata-ajaxおよびその他のAJAX関連の属性

を処理しません
+0

パーフェクト、それはまさに問題でした。 – glenatron

関連する問題