我试图使用链接使用下面的代码提交表单:ASP.NET MVC提交窗体使用ActionLink的
function deleteItem(formId) {
// submit the form
$("#" + formId).submit();
}
基本上我有一个网格,它显示了一些项目。每行都有一个删除按钮,删除该项目。然后我触发以下功能从网格中删除项目。
function onItemDeleted(name) {
$("#" + name).remove();
}
它工作正常,当我使用提交按钮,但当我使用动作链接从控制器行动的JavaScript返回为字符串,不执行。
public JavaScriptResult DeleteItem(string name)
{
var isAjaxRequest = Request.IsAjaxRequest();
_stockService.Delete(name);
var script = String.Format("onItemDeleted('{0}')", name);
return JavaScript(script);
}
这里是HTML代码:
<td>
<% using (Ajax.BeginForm("DeleteItem",null, new AjaxOptions() { LoadingElementId = "divLoading", UpdateTargetId = "divDisplay" },new { id="form_"+stock.Name }))
{ %>
<%=Html.Hidden("name", stock.Name)%>
<a id="link_delete" href="#" onclick="deleteItem('form_ABC')">Delete</a>
<% } %>
</td>
我的理论是,提交按钮不会改变的响应,而操作链接直接返回无论是从控制器的行动返回。这意味着,在使用提交时,JavaScript被添加到响应中,然后在执行链接时执行,它仅作为字符串返回。
如果是这种情况,怎么可能有人使用动作链接而不是提交按钮。
UPDATE:
好像我需要进行一些额外的东西,使操作链接的工作,因为它不会触发onsubmit事件。
http://www.devproconnections.com/article/aspnet22/posting-forms-the-ajax-way-in-asp-net-mvc.aspx
我建议尝试没有Html帮手?我很担心; MVC正在慢慢变成Webforms的邪恶双胞胎。 – ziya
HtmlHelpers为了什么?我正在使用没有HtmlHelpers的链接。 – azamsharp