2013-07-25 7 views
6

У меня есть форма с двумя полями выпадающего списка и флажок. Я все работает правильно, но я не могу по некоторым причинам получить значение флажка, если он установлен, это мой код ..mvc3 checkbox value после отправки

[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" /> 


} 
} 

В основном DropDownList имеет 2 опции, которые Принять и Deny Я могу записать, какой пользователь выбирает через SWITCH-case в контроллере теперь, как я могу фиксировать значение флажков? Если вы заметите, что флажки имеют переменную с именем @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

Как выглядит ваша модель? Кроме того, можно указать флажкам общее имя типа 'selectedGroupRequestIds', затем принять' IEnumerable selectedGroupRequestIds' в вашем действии? –

+0

Я только что отредактировал свое сообщение и положил модель, и я понял, что ваше высказывание дает им общее имя и выделяет выбранные значения с помощью GrouprequestID. Я попробую, чтобы – user1591668

ответ

17

Флажки, когда отправляется на сервер действовать немного странно. Если флажок установлен браузер будет посылать name=value как в

<input type="checkbox" name="name" value="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 

You следует также отметить, что если вы используете вспомогательное расширение Html:

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

Где MyValuebool является расширение создаст checkbox ввода тега и также hidden входной тег с тем же именем, что означает значение будет всегда передается в метод контроллера.

Надеюсь, это поможет.

+0

отлично поблагодарил вас за ответ, который прояснил все и код за работой !! – user1591668

+0

+1 для чистого ответа ..... –

Смежные вопросы