2011-07-29 29 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

已更新,以顯示如何遠離表單集合:) –

相關問題