2012-02-27 34 views
1

我有一個ASP.Net MVC頁面,我想用AJAX更新用戶在窗體上編輯/查看父表的子表。我確定這是一個非常標準的模式,但是因爲我是平臺新手。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.ActionLink出現在相同的方式HTML.ActionLink要表現的問題 - 他們正在導航瀏覽器直接在表單上進行操作。當啓用「確認」AjaxOption的鏈接時,它不顯示任何種類的確認框。我想我錯過了一些重要的管道工程,或者內置的幫助程序方法沒有我希望的那樣幫助,我需要手動添加一些額外的JavaScript。

由Ajax.ActionLink創建的HTML看起來像這樣:

<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> 

我包括 「jquery.validate.min.js」, 「jquery.validate.unobtrusive.min.js」,「MicrosoftAjax .debug.js「和」MicrosoftMVCAjax.debug.js「。

回答

2

我認爲你缺少鏈接到不顯眼的jQuery庫(通常在_layout友情鏈接)

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

做不到這一點,沒有人會處理data-ajax和其他Ajax相關的屬性

+0

完美,這正是問題所在。 – glenatron 2012-02-27 10:33:49

相關問題