通过JQuery Post方法将FormCollection传递给控制器​​并获取数据...

时间:2011-07-29 19:05:21

标签: jquery asp.net-mvc-2 parameters postback

我在使用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(""));
        });
    });
});

有什么想法吗?我要继续寻找。

1 个答案:

答案 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中。