我試圖使用鏈接使用下面的代碼提交表單: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