2011-07-29 136 views
0

我有一个小问题发送formCollection数据到MVC中我的控制器操作方法使用jQuery.Post方法。虽然我通过jQuery发送数据,但它不在我的动作控制器的formCollection参数中,让我更具体一些,它在那里,但并不完全如我所料它在那里......首先, formCollection参数现在有2个条目...传入的PopID(21)加上传入的序列化数据(FirstName = Fifo & LastName = Caputo & DateOfBirth = & DateOfBirth = 7%2F29%2F2011 + 12%3A00%3A00 + AM &市= &状态= &国家= &邮政+代码= & deathIndicator = &电子邮件= &性别= &语言= & NextOfKin = &手机=) 我在做什么错在这里?控制器操作。通过JQuery Post方法传递FormCollection到控制器并获取数据...

[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("")); 
     }); 
    }); 
}); 

任何想法?我会继续寻找。

回答

2

试试这个:

$.post("/PatientACO/SearchByDemographic", srlzdform, function (data) { 

虽然你为什么要使用的FormCollection而不是一个视图模型的我不知道。

也许你想看看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存储在模型中,则不必在您的javascript中使用<%:PopID%>。

+0

那是干什么的?这与我所拥有的有何不同?什么是viewModel,为什么我会使用它而不是formCollection?我正在从表单中的用户收集数据...并且请注意,我的popID是我的动作控制中的第一个参数 如何在我的控制器btw中处理传入数据? – SoftwareSavant

+0

已更新,以显示如何远离表单集合:) –

相关问题