【发布时间】:2011-11-16 05:59:26
【问题描述】:
好吧,因为我在这里从来没有得到我的问题的答案:checkboxes and radio buttons in MVC FormCollection
我想我会采取不同的方法,只需找到我的单选按钮值客户端,并在我的 ajax 调用中将其作为不同的名称/值对传递...这是个好主意,但我不能让它工作。
使用它可以很好地传递我的表单集合:
formCollection = $(':input');
$.ajax({
type: "POST",
url: "/mycontroller/mymethod",
data: formCollection,
dataType: "text",
success: showConfirm,
error: function (xhr, textStatus, errorThrown) {
alert(xhr.responseText);
}
});
但是当我尝试将我的数据更改为这样的对象时:
formCollection = $(':input');
$.ajax({
type: "POST",
url: "/mycontroller/mymethod",
data: ({collection: formCollection}),
dataType: "text",
success: showConfirm,
error: function (xhr, textStatus, errorThrown) {
alert(xhr.responseText);
}
});
它不会飞。我需要这样做,所以最终我可以使用它:
formCollection = $(':input');
$.ajax({
type: "POST",
url: "/mycontroller/mymethod",
data: ({collection: formCollection, radiobutton: radiobuttonValue}),
dataType: "text",
success: showConfirm,
error: function (xhr, textStatus, errorThrown) {
alert(xhr.responseText);
}
});
我在控制器上的操作方法如下所示:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult mymethod(FormCollection collection)
{
}
任何想法为什么当我更改数据时它不起作用?
【问题讨论】:
-
FormCollection实际上包含什么? -- 参见api.jquery.com/jQuery.ajax/#sending-data-to-server -
formCollection = $(':input');它包含页面上的所有输入字段...
-
所以你想提交一个 jQuery 对象,而不是数据?尝试改用
formCollection = $('form').serialize()。 api.jquery.com/serialize -
ok 序列化 formCollection 就可以了。但是请注意其他人,它仍然不能像数据一样传递:({whatever:whatever})......它必须像数据一样传递:whatever.serialize()。如果您从这个 mblase 中做出“真实”的答案,我会将其标记为答案。
标签: asp.net-mvc jquery formcollection