Получить значения флажков в контроллере MVC 4
Я пытаюсь получить проверенное значение флажка из списка флажков без какого-либо успеха, ниже приведен код, который я пробовал:
модель
[DisplayName("Gender")]
public IList<SelectListItem> Gender { get; set; }
контроллер
public ActionResult Index()
{
AssociateFormViewModel objStudentModel = new AssociateFormViewModel();
List<SelectListItem> genderNames = new List<SelectListItem>();
genderNames.Add(new SelectListItem { Text = "Male", Value = "1" });
genderNames.Add(new SelectListItem { Text = "Female", Value = "2" });
genderNames.Add(new SelectListItem { Text = "Prefer not to say", Value = "3" });
objStudentModel.Gender = genderNames;
return PartialView("AssociateApplicationForm", objStudentModel);
}
[HttpPost]
public ActionResult HandleFormSubmit(MembershipFormViewModel model)
{
//model not valid, do not save, but return current umbraco page
if (ModelState.IsValid == false)
{
return CurrentUmbracoPage();
}
string test = "Gender: " + model.Gender + Environment.NewLine; //getting null here
return RedirectToCurrentUmbracoPage();
}
Посмотреть
@foreach (var names in @Model.Gender)
{
var checkBoxId = "chk" + names.Value;
var tdId = "td" + names.Value;
<table width="100%">
<tr >
<td width="20px">
<input type="checkbox" id="@checkBoxId" class="chkclass" value="@names.Value" />
</td>
<td id="@tdId" width="100px">
@names.Text
</td>
</tr>
</table>
}
Любые идеи, в которых я ошибаюсь, выбранное значение флажка становится недействительным в действии публикации. Также, как я могу ограничить выбор пользователем только одного флажка,
Любая помощь или предложение будут оценены. Спасибо
2 ответа
Назначьте имя вашему флажку:
<input name="gender" type="checkbox" id="@checkBoxId" class="chkclass" value="@names.Value" />
Затем примите строковый массив с именем параметра gender
[HttpPost]
public ActionResult HandleFormSubmit(string[] gender,
MembershipFormViewModel model)
{
//model not valid, do not save, but return current umbraco page
if (ModelState.IsValid == false)
{
return CurrentUmbracoPage();
}
string test = "Gender: " + model.Gender + Environment.NewLine; //getting null here
return RedirectToCurrentUmbracoPage();
}
Согласно вашему коду model.Gender
это список только для создания флажков. Для получения выбранного значения флажка, вы должны добавить новое свойство в вашей модели, как
public string SelectedGender { get; set; }
и при создании флажков назовите флажки как новое имя свойства, т.е. SelectedGender
<input type="checkbox" id="SelectedGender1" name="SelectedGender" class="chkclass" value="@names.Value" />
Надеюсь, что это поможет вам.