我在使用jQuery .Post方法将formCollection数据发送到MVC中的控制器操作方法时遇到了一些问题。当我通过jQuery发送数据时,它不在我的动作控制器的formCollection参数中,让我更具体,它在那里,但不是我预期它在那里...首先, formCollection参数现在有2个条目...传入的PopID(21)加上传入的序列化数据(FirstName = Fifo& LastName = Caputo& DateOfBirth =& DateOfBirth = 7%2F29%2F2011 + 12%3A00%3A00 + AM&放大器;城市=安培;国家=安培;国家=&放大器;邮政+代码=&放大器; deathIndicator =安培;电子邮件=安培;性别=&放大器;语言=安培; NextOfKin =安培;电话=) 我在这做错了什么?控制器行动。
[HttpPost]
public ActionResult SearchByDemographic(int PopID, FormCollection formCollection)
{
}
传递值的JavaScript-Jquery方法......
$(function () {
$("#DemoGraphSubmit").click(function (e) {
e.preventDefault();
var form = $("#DemoGraphID");
var srlzdform = form.serialize();
var PopID = <% =PopID %>
var options = [];
var serializedForm = form.serialize();
$.post("/PatientACO/SearchByDemographic", {PopID:PopID,srlzdform:srlzdform}, function (data) {
options = $.map(data, function (item, i) {
return "<option value=" + item.Value + ">" + item.Text + "</option>";
});
$("#PatientListToAdd").html(options.join(""));
});
});
});
有什么想法吗?我要继续寻找。
答案 0 :(得分:2)
试试这个:
$.post("/PatientACO/SearchByDemographic", srlzdform, function (data) {
虽然我不确定你为什么要使用FormCollection而不是viewmodel。
也许你想看看NerdDinner
所以这是你的观点(显然比这更复杂)
@model TestModel
<form action="@Url.Action("SearchByDemographic","PatientACO")" method="post">
@Html.HiddenFor(model => model.PopID)
@Html.TextBoxFor(model => model.Text)
</form>
以下是您的行动:
[HttpPost]
public ActionResult SearchByDemographic(TestModel model)
{
}
这是你的模特
public class TestModel
{
public int PopID { get; set; }
public string Text { get; set; }
// more properties
}
这样,如果您将PopID存储在模型中,则无需执行&lt;%:PopID%&gt;在你的javascript中。