Można utworzyć niestandardowy szablon edytora dla enum Airlines
, który będzie renderować listę przycisków radiowych. W modelu masz właściwość typu Airlines
i oznacz tę właściwość atrybutem Required
i ustaw ErrorMessage = "select one item"
. Nie zapomnij dołączyć walidacji jQuery do sprawdzania poprawności strony klienta, jeśli chcesz, zazwyczaj wystarczy dodać @Scripts.Render("~/bundles/jqueryval")
do swojego układu lub widoku. Jeśli nie używasz sprawdzania poprawności jQuery, musisz uczynić właściwość zerowalną w modelu, ponieważ wartości domyślne są domyślnie ustawione na pierwszą wartość, więc MVC nie uzna go za nieprawidłowy. Pamiętaj, że jeśli zmienisz właściwość na zerowalną, będziesz musiał zmienić również typ modelu swojego szablonu edytora, tak aby był również zerowalny.
UPDATE
Aby włączyć edytora szablonów do renderowania listę przycisk radiowy dla każdego wyliczenia, zmienić szablon do poniższego:
@model Enum
@foreach (var value in Enum.GetValues(Model.GetType()))
{
@Html.RadioButtonFor(m => m, value)
@Html.Label(value.ToString())
}
ORIGINAL
szablonu edytora , Airlines.cshtml, w widokach \ Shared \ EditorTemplates katalogu:
@model MvcTest.Models.Airlines
@foreach (var value in Enum.GetValues(typeof(MvcTest.Models.Airlines)))
{
@Html.RadioButtonFor(m => m, value)
@Html.Label(value.ToString())
}
Model:
public class TestModel
{
[Required(ErrorMessage = "select one item")]
public Airlines Airline { get; set; }
}
Metody działania:
public class HomeController : Controller
{
[HttpGet]
public ActionResult Index()
{
return View(new TestModel());
}
[HttpPost]
public ActionResult Index(TestModel model)
{
if (ModelState.IsValid)
{
return RedirectToAction("Index");
}
return View(model);
}
}
Widok:
@model MvcTest.Models.TestModel
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
@using (Html.BeginForm())
{
@Html.EditorFor(m => m.Airline)
<input type="submit" value="Submit" />
@Html.ValidationSummary(false)
}
myślę Ahmed oznaczało, że 'RadioButtonFor' nie istniał * przed * do MVC4 i że przykłady he stwierdził, że nie użył metody pomocnika. –
Jak dodać etykiety z prawidłowym zestawem atrybutów "for"? –
Nie jestem pewien, czy podążam. Zwykle z taką listą mam tylko 1 etykietę na górze, mówiąc: wybierz najlepszy ... –