Asp.net mvc ASP.NET MVC AJAX actionlink注入onclick属性
我有一个局部视图,它输出一个编辑器列表。列表中的每个编辑器都有一个删除链接,使用Asp.net mvc ASP.NET MVC AJAX actionlink注入onclick属性,asp.net-mvc,asp.net-ajax,actionlink,Asp.net Mvc,Asp.net Ajax,Actionlink,我有一个局部视图,它输出一个编辑器列表。列表中的每个编辑器都有一个删除链接,使用@Ajax.actionlink调用该链接,如下所示: if(Model.Any()){ <ul> @foreach (var editor in Model) { <li>@editor.firstName @editor.lastName, @editor.emailAddress (@Ajax.ActionLink("Del
@Ajax.actionlink
调用该链接,如下所示:
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>
}
<li>John Smith, johnsmith@example.com (<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>
问题是,当我查看源代码时,编辑器列表项的渲染标记如下所示:
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>
}
<li>John Smith, johnsmith@example.com (<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>
约翰·史密斯,johnsmith@example.com()
我对删除链接中的内联JavaScript感到有点失望,并希望它更“干净”(可能是数据属性之类的?)。我觉得这很难(提供确认消息等)
问题是,这是ASP.NET MVC中AJAX的预期输出吗?我对此很陌生,所以不确定我的实现中是否做错了什么
非常感谢。是的,这是
Ajax.*
助手系列产生的标记。一般来说,我的建议,尤其是考虑到您不希望添加*属性上的,是为了避免像瘟疫这样的帮手。您将拥有更干净、更可维护(尽管更详细)的代码来处理AJAX,也就是说,只需添加一个标准的Html.ActionLink
,然后使用jQuery附加一个调用AJAX的事件处理程序。此外,当出现问题时(几乎不可避免),您可以完全了解并控制正在运行的JavaScript,而不是任由一些固执己见的Microsoft开发人员摆布