Вы можете создать шаблон редактора для свойства StarRating
, который должен находиться в одном из двух мест:
- ~ / Views / Shared / EditorTemplates /
- ~ / Просмотров // EditorTemplates /
Оттуда вы можете использовать UIHintAttribute
и украсить свойство вашей модели (если это уникальный тип), вы можете назвать шаблон на основе типа, или вы можете назвать его как-нибудь полностью Пользовательский и ссылки на шаблон, когда вы идете, чтобы отобразить редактор.
Ради демонстрации я назову это «StarRating», что означает, что я могу либо применить [UIHint("StarRating")]
к свойству, либо использовать @Html.EditorFor(x => x.StarRating, "StarRating")
, чтобы он применил этот шаблон.
Далее идет создание фактического шаблона. Учитывая, что, похоже, вы уже включили необходимые сценарии, нужно просто настроить вывод. Итак, у нас есть шаблон:
~ / Views / Shared / EditorTemplates / StarRating.cshtml
@model Int32
@* I don't know how high a rating you want, but I'll assume a 1-5 rating *@
@for (Int32 rating = 1; rating <= 5; r++)
{
@Html.RadioButtonFor(x => x, rating, new { @class = "star" })
}
Обновление
Теперь, когда я знаю, что это int, я бы, вероятно, украсил вашу модель с помощью UIHint
, затем просто позвонил бы EditorFor
в обычном режиме, а MVC позаботится обо всем остальном. e.g.:
YourViewModel.cs
[UIHint("StarRating")]
[Range(1, 5, ErrorMessage = "Invalid rating")]
public Int32 StarRating { get; set; }
~ / Views / MyController / MyForm.cshtml
@Html.EditorFor(model => model.StarRating)
~ / Views / Shared / EditorTemplates / StarRating.cshtml
@model Int32
@for (Int32 rating = 1; rating <= 5; r++)
{
@Html.RadioButtonFor(model => model, rating, new { @class = "star" })
}