将表单数据通过Ajax传递给Action

时间:2017-01-24 14:11:26

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

我尝试将多个值传递给MVC中的Action,但 user 始终为null。

var form = $('form');
    $.ajax({
        type: "POST",
        url: '@Url.Content("~/User/UpdateUser")',
        data: { user: form.serialize(), NameOfCare: care },
        success: function (result) {
            if (result == "Ok") {
                document.location.href = '@Url.Content("~/User/Index")';
            }
        }
    });

如何在Ajax中传递包含多个值的表单?

2 个答案:

答案 0 :(得分:1)

首先,您必须使用@Url.Action代替@Url.Content,因为您必须将form数据发送到controller才能处理data

.serialize方法将一组表单元素编码为字符串以供提交。

你应该使用这个:data:form.serialize() + "&NameOfCare="+care

server-side上,您的方法应如下所示:

public ActionResult(UserViewModel user,string NameOfCare){

}
使用Model Binding

user对象将filled包含您的数据

答案 1 :(得分:0)

您正在发送一个序列化对象,而它实际上是一个字符串。尝试以下示例。该操作将自动反序列化字符串。

        function load() {
        var dataT = $("#searchform").serialize();
        var urlx = "@Url.Action("SR15Fetch", "SR15", new { area = "SALES" })";
        debugger;
        $.ajax({
            type: "GET",
            url: urlx,    
            data: dataT,  
            cache: false,
            success: HandellerOnSuccess,
            error: HandellerOnFailer,
            beforeSend: Ajax_beforeSend(),
            complete: Ajax_Complete(),
        });
    }