如何使用ajax将包含超过100个字段的表单发布到MVC操作?

时间:2018-04-09 04:54:36

标签: jquery ajax asp.net-mvc

说明

我的cshtml页面包含一个包含100多个字段的表单。我想使用ajax将该表单提交给mvc动作。

代码:

 var LoadFilters = function (data) {
        var formData;
        if (!showAll) {
            formData = $("#SearchForm").serializeArray();
        }
        var url = $.url("load-pp-transaction-filters") + "?buyerSk=" + data;
        $.ajax({
            type: "GET",
            url: url,
            contentType: 'application/json; charset=utf-8',
            data: formData,
            dataType: "html",
            success: function (msg) {
                $("#pp-transaction-filters").html(msg);
                $("#pp-transaction-filters").css("display", "block");
            },
            error: function (e)
            {
               console.log(e.responseText)
            }
        });
    }

我总是得到404.15错误,如何处理?

2 个答案:

答案 0 :(得分:0)

首先检查您的网址是否正确,因为404错误是针对不匹配的网址。

其次,如果您要提交以下数据,则必须使用Post:

var model = { 
    Name :"Shyju", 
    Location:"Detroit", 
    Interests : ["Code","Coffee","Stackoverflow"]
};

$.ajax({
    type: "POST",
    data: JSON.stringify(model),
    url: url,
    contentType: "application/json"
}).done(function (res) {
    $("#SomeDivToShowTheResult").html(res);
});


public class DashboardViewModel
{
    public string Name {set;get;}
    public string Location {set;get;}
    public List<string> Interests {set;get;}
}

[HttpPost]
public PartialViewResult IndexPartial([FromBody] DashboardViewModel m)
{
    return PartialView("_IndexPartial",m);
}

希望这会对你有所帮助。

答案 1 :(得分:0)

问题的根本原因是您使用GET中的Ajax来获取数据,但GET方法的长度有限。

有两种方法可以做到:

一个。如果您使用的是IIS,则可以设置requestLimits的值,有关详情,请查看 Request Limits

湾将您的Ajax方法从GET更改为POST

 var LoadFilters = function (data) {
        var formData;
        if (!showAll) {
            formData = $("#SearchForm").serializeArray();
        }
        var url = $.url("load-pp-transaction-filters") + "?buyerSk=" + data;
        $.ajax({
            type: "POST",
            url: url,
            data: formData,
            success: function (msg) {
                $("#pp-transaction-filters").html(msg);
                $("#pp-transaction-filters").css("display", "block");
            },
            error: function (e)
            {
               console.log(e.responseText)
            }
        });
    }

通常POST方法可以容纳更多参数,但是如果您的字段太多,它仍然无效,那么您还需要更改requestLimits