Принимать значение от другого элемента управления на той же странице cshtml при разработке .Net MVC3 с Razor?

#asp.net-mvc-3

#asp.net-mvc-3

Вопрос:

Я думаю, на это уже должен быть дан ответ!

Что-то вроде :

   @Html.EditorFor(model => model.UserDept)
  

Просто у UserDept есть несколько опций, поэтому я хочу, чтобы пользователи могли выбирать в radio или checkbox, и это текстовое поле может получить значение , 🙂

Ответ №1:

Обычно это делается с помощью выпадающего списка, потому что для этого есть помощник.

Сначала вы должны заполнить данные для этого списка выбора в вашем контроллере, вот так:

 public ActionResult Edit(int id)
{
    ViewBag.PossibleMembers = memberRepository.All;
    return View(projectRepository.Find(id));
}
  

Тогда, на ваш взгляд, вы можете использовать:

 @Html.DropDownListFor(model => model.MemberId, ((IEnumerable<RunDog2.Models.Member>)ViewBag.PossibleMembers).Select(option => new SelectListItem {
    Text = (option == null ? "None" : option.Name), 
    Value = option.MemberId.ToString(),
    Selected = (Model != null) amp;amp; (option.MemberId == Model.MemberId)
}), "Choose...")
  

Вы можете получить этот код, сгенерированный, например, с помощью MvcScaffolding.

Комментарии:

1. Спасибо Dampe! Значение текстового поля для редактирования взято из модели и не может быть заменено. Это может быть перезаписано только из другого элемента управления checkbox htmlhelper.

2. Я этого не понимаю. Но вам, конечно, не обязательно использовать ViewBag, вы можете получить эту коллекцию из model, если она у вас есть. доступна.