表单提交不是来自控制器的触发方法

时间:2014-01-30 21:53:20

标签: c# javascript jquery asp.net-mvc

我有一个用户列表,我将添加删除用户的功能,但是我现在拥有的东西 - 表单没有做它应该做的事情:那就是从api控制器触发删除方法。我没有在页面上或控制台中出现任何错误,也不确定我可能做错了什么:

<form  data-submit-button="#userRemoveSubmit"  id="userRemoveForm" action="/api/UserRemove/" class="ajax" method="delete" data-overview-id="@ViewBag.OverViewID" data-bind="attr: { 'data-user-id': ID(), 'data-type-id': TypeId() }">
    .......
</form>

<a id="userRemoveSubmit" title="Remove User"><b>REMOVE</b></a>

控制器:

public HttpResponseMessage Delete(TypesList typeInfo)
{
 ........
}

TypeList Model:

public class TypesList
{
  public int UserId { get; set; }
  public int TypeId { get; set; }
  public int? OverViewId { get; set; }
}

如何正确地将它们全部连接在一起,这样当我点击删除它时会触发控制器中的删除方法?

2 个答案:

答案 0 :(得分:1)

问题在于表单标记中的action="delete"

  

浏览器通常只能对表单元素执行GET或POST   (除非您使用AJAX提交)。

请查看此答案,以便查看解决方法: DELETE method not working

答案 1 :(得分:0)

您应该使用AJAX,并发送DELETE请求:

$('#userRemoveSubmit').click(function(e){
    e.preventDefault(),
    $.ajax({
        url: '/api/UserRemove/',
        type: 'DELETE',
        data: { typeInfo : YOURVARIABLEHERE }
    }).done(function() {
         alert( "success" );
    })
    .fail(function() {
         alert( "error" );
    })
    .always(function() {
         alert( "complete" );
    });
});

参考:http://api.jquery.com/jquery.ajax/