3

我将 ASP.NET MVC3 与 Jquery 一起使用。我正在尝试使用类似这样的方法将表单元素传递回控制器(请注意,为简单起见,我删除了成功和错误代码):

var formElements = $("#myForm").serialize();
        $.ajax({
            type: "POST",
            url: ScriptResolveUrl("~/Report/SubmitChanges"),
            data: {collection: formElements},
            success: 
            error:
            dataType: "json"
        });

我的问题是我的控制器方法中的参数应该是什么样的:这是我的控制器方法:

public ActionResult SubmitChanges(WHAT GOES HERE?)
{
}

所以我真正要寻找的是进入控制器方法的参数类型应该是什么?我希望能够检索控制器中表单元素的值。

4

4 回答 4

1

所以这就是我所做的。我的表单上有大约 20-30 个元素,所以我真的不想将每个元素都变成参数或将它们全部列在集合中。

在 jquery 中,我执行了以下操作:

 var formElements = $("#myForm").serialize();

        $.ajax({
            type: "POST",
            url: ScriptResolveUrl("~/Report/SubmitChanges"),
            data: { parms: formElements },
            success:
            error: 
            dataType: "json"
        });

然后它作为字符串进入我的控制器:

public ActionResult SubmitChanges(string parms)

然后我找到了一个解析该字符串的函数(似乎正在工作)

NameValueCollection qscoll = HttpUtility.ParseQueryString(parms);

这似乎可以在没有列出所有表单元素的情况下工作。

于 2013-04-17T14:06:28.877 回答
0

假设您的表单元素都对应于您的模型(假设它是MyModel),那么它应该只是:

public ActionResult SubmitChanges(MyModel model)
{
}

MVC 默认模型绑定将完成其余的工作:)。

确保您更改data了 jQuery ajax 方法中的定义,但您已经对其进行了序列化。做就是了:

data: formElements,

我假设您的 jQuery ajax 方法中的以下内容是复制和粘贴错误?

success: 
error:

如果不是,请确保将其删除或将其更改为:

success: function (result) {
    //do something
},
error: function () {
    //do something on error
}
于 2013-04-17T12:33:48.017 回答
0

你快到了。只需去掉data参数周围的括号:

var formElements = $('#myForm').serialize();
$.ajax({
    type: 'POST',
    url: ScriptResolveUrl("~/Report/SubmitChanges"),
    data: formElements,
    success: function(result) {
        // handle the success of the AJAX request
    },
    error: function() {
        // an error occurred
    }
});
于 2013-04-17T14:08:14.570 回答
0

问题是它们没有与我的表单元素对应的模型。

然后你可以有这个:

public ActionResult SubmitChanges(int id, string name)
{
}

然后传入各个项目:

var o = {
    id = $("#id_elem_id").val(),
    name = $("#name_elem_id").val()
}
$.ajax({
    type: "POST",
    url: ScriptResolveUrl("~/Report/SubmitChanges"),
    data: JSON.stringify(o),
    success: 
    error:
    dataType: "json"
});

whereid_elem_idname_elem_id是您的 html 元素的 id。并添加您需要的任何其他参数,只需遵循即可。

于 2013-04-17T12:39:44.017 回答