2014-09-23 90 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具有完全的知识和控制权,而不是受到某些自以为是的微软开发人员的摆布。