2013-07-25 152 views
6

我有一個帶有2個字段的表單和一個複選框。我把一切都正常工作,但我不能因爲某些原因獲得一個複選框的值,如果它被選中,這是我的代碼..提交後mvc3複選框的值

[HttpPost] 
    public ActionResult view(string pick) 
    { 

     switch (pick) 
     { 
      case "Deny": 
       // capture checkbox value here 
       break; 
      case "Accept": 
       // capture checkbox value here 
       break; 

     } 
     return View(); 
    } 

這是我的看法

@using (Html.BeginForm("view", "grouprequest", FormMethod.Post, new {})) 
{ 


@Html.DropDownList("pick", new SelectList(new List<Object>{ 
       new{ Text ="Accept", Value= "Accept"},new{ Text ="Deny", Value= "Deny"}}, "Value", "Text"), new {}) 

<input type="submit" name="work" id="work" value="Update" style="font-size:16px" /> 

foreach (var item in Model) 
{ 
<input type="checkbox" id="@item.grouprequestID" name="@item.grouprequestID" value="@item.grouprequestID" /> 


} 
} 

基本上下拉列表有2選項接受拒絕我可以通過控制器中的SWITCH案例捕獲用戶選擇哪一個現在如何捕獲複選框的值?如果您注意到複選框有一個名爲@groupRequestID的變量,所以每個複選框都有不同的唯一值,如1,2,3等。任何幫助將不勝感激!

示範

public class grouprequest 
{ 
    [Key] 
    public int grouprequestID { get; set; } 
    public int? profileID { get; set; } 
    public int? registrationID { get; set; } 
    public DateTime expires { get; set; } 
    public int? Grouplink { get; set; } 
} 
+0

你的'Model'看起來像什麼?另外,還可以給複選框添加一個通用名稱,例如'selectedGroupRequestIds',然後在您的操作中接受'IEnumerable selectedGroupRequestIds'? –

+0

我剛編輯我的消息,並把模型,並確定我看你說什麼給他們一個共同的名字,並通過使用GrouprequestID挑選出選定的值我會盡力 – user1591668

回答

17

檢查框時發送到服務器的行爲有些奇怪。 如果複選框被選中,瀏覽器將在

<input type="checkbox" name="name" value="value" /> 

發送name=value但如果該複選框是檢查服務器不發送任何東西。

<input type="checkbox" name="Check1" id="Checks1" value="Hello" checked="checked"/> 
<input type="checkbox" name="Check1" id="Checks1" value="Hello1" /> 
<input type="checkbox" name="Check1" id="Checks1" value="Hello2" /> 

會導致Check1 = Hello

這意味着,如果所有複選框都有關,命名他們同樣將填充你的ActionMethod的相同屬性。如果該屬性是一個枚舉,它將只包含被檢查的屬性。

如果你在你看來有這樣的:

<input type="checkbox" name="MyValues" value="1" checked="checked"/> 
<input type="checkbox" name="MyValues" value="2" /> 
<input type="checkbox" name="MyValues" value="3" /> 

,並以此作爲你的控制器的操作方法:

public ActionMethod MyAction(IEumerable<int> myValues) 

myValues變量將是這樣的:

myValues[0] == 1 

你還應該注意,如果您使用Html幫助器擴展:

@Html.CheckBoxFor(m => m.MyValue) 

MyValuebool擴展將創建一個checkbox輸入的標籤,也是一個具有相同名稱hidden輸入標籤,這意味着一個值將始終被傳遞到控制器方法。

希望這會有所幫助。

+0

完美謝謝你的迴應,清除了一切,代碼是工作! – user1591668

+0

+1的乾淨答案..... –