2014-09-23 92 views
0

我有一個局部視圖,它輸出一個編輯器列表。列表中的每個編輯器有一個刪除鏈接,這是使用@Ajax.actionlink調用,就像這樣:ASP.NET MVC AJAX actionlink注入onclick屬性

if(Model.Any()){ 
    <ul> 
     @foreach (var editor in Model) 
     { 
      <li>@editor.firstName @editor.lastName, @editor.emailAddress (@Ajax.ActionLink("Delete", "DeleteEditor", "EditorSurface", new { editorId = editor.id }, new AjaxOptions()))</li> 
     } 
    </ul> 
} 

我已經包括在我看來@using System.Web.Optimization;和我從我的觀點調用jQuery的不顯眼的AJAX腳本太:

@Scripts.Render("~/scripts/jquery.unobtrusive-ajax.min.js") 

的問題是,當我查看源代碼,呈現的加價爲我的編輯列表中的項目是這樣的:

<li>John Smith, [email protected] (<a href="/umbraco/Surface/EditorSurface/DeleteEditor?editorId=32" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace });">Delete</a>)</li> 

我有點disappoi在刪除鏈接中看到內聯JavaScript,並希望稍微「乾淨」一些東西(可能是數據屬性或其他東西?)。這讓我很難接觸到(提供確認信息等)。

問題是,這是ASP.NET MVC中AJAX的預期輸出嗎?我對此很陌生,所以不確定在執行過程中我是否做錯了什麼。

非常感謝。

回答

0

是的,這是幫助者生產的Ajax.*家族的標記。總的來說,我的建議,特別是鑑於您不希望添加on*屬性這一事實,是爲了避免像鼠疫這樣的助手。你將擁有更清潔和可維護(儘管稍微更冗長)的代碼來處理AJAX,即只需添加標準Html.ActionLink,然後使用jQuery附加調用AJAX的事件處理程序。此外,當出現問題時,因爲它幾乎不可避免地發生了錯誤,所以您對正在運行的JavaScript具有完全的知識和控制權,而不是受到某些自以爲是的微軟開發人員的擺佈。