MVC4: два переключателя для одного свойства булевой модели - программирование
Подтвердить что ты не робот

MVC4: два переключателя для одного свойства булевой модели

Я пытаюсь найти правильный синтаксис Razor для взаимоисключающих переключателей, которые отражают значение логического свойства в моей модели. Моя модель имеет следующее:

public bool IsFemale{ get; set; }

Я хотел бы показать это с помощью двух переключателей: "Мужской" и другой "Женский", но все, что я пробовал до сих пор, не отразило фактическое значение свойства IsFemale на модели. В настоящее время у меня есть это:

@Html.RadioButtonFor(model => model.IsFemale, !Model.IsFemale) Male
@Html.RadioButtonFor(model => model.IsFemale, Model.IsFemale) Female

Это похоже на правильное сохранение значения, если я изменяю и обновляю, но не отмечаю правильное значение, как отмечено. Я уверен, что это что-то глупое, но я застрял.

4b9b3361

Ответ 1

Попробуйте вот так:

@Html.RadioButtonFor(model => model.IsFemale, "false") Male
@Html.RadioButtonFor(model => model.IsFemale, "true") Female

И вот полный код:

Модель:

public class MyViewModel
{
    public bool IsFemale { get; set; }
}

Контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel
        {
            IsFemale = true
        });
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        return Content("IsFemale: " + model.IsFemale);
    }
}

Вид:

@model MyViewModel

@using (Html.BeginForm())
{
    @Html.RadioButtonFor(model => model.IsFemale, "false", new { id = "male" }) 
    @Html.Label("male", "Male")

    @Html.RadioButtonFor(model => model.IsFemale, "true", new { id = "female" })
    @Html.Label("female", "Female")
    <button type="submit">OK</button>
}

Ответ 2

В MVC 6 (Core ASP.NET) это также может быть достигнуто с помощью помощников тегов:

<label>
    <input type="radio" asp-for="IsFemale" value="false" /> Male
</label>
<label>
    <input type="radio" asp-for="IsFemale" value="true" /> Female
</label>