У меня есть веб-сайт ASP.NET MVC 3 (Razor) и (упрощенная) модель под названием Review :
public class Review
{
public int ReviewId { get; set; }
public bool RecommendationOne
{
// hook property - gets/set values in the ICollection
}
public bool RecommendationTwo { // etc }
public ICollection<Recommendation> Recommendations { get; set; }
}
Рекомендация выглядит следующим образом:
public class Recommendation
{
public byte RecommendationTypeId
}
У меня также есть enum , называемый PracticeType , который я использую для сопоставления вышеуказанной рекомендации. (основано на Рекомендации Типа).
Итак, подведем итог - один обзор имеет множество Рекомендаций , и каждая из этих Рекомендаций соответствует определенному типу перечисления, я раскрываю свойства ловушки для упрощения привязки / кода модели.
Итак, на представление:
@Html.EditorFor(model => model.Recommendations, "Recommendations")
Довольно просто.
Теперь для шаблона редактора я хочу отобразить флажок для каждого возможного РекомендацияТип (перечисление), и если модель имеет эту рекомендацию (например, в режиме редактирования), я устанавливаю флажок.
Вот что у меня есть:
@model IEnumerable<xxxx.DomainModel.Core.Posts.Recommendation>
@using xxxx.DomainModel.Core.Posts;
@{
Layout = null;
}
<table>
@foreach (var rec in Enum.GetValues(typeof(RecommendationType)).Cast<RecommendationType>())
{
<tr>
<td>
@* If review contains this recommendation, check the box *@
@if (Model != null && Model.Any(x => x.RecommendationTypeId == (byte)rec))
{
@* How do i create a (checked) checkbox here? *@
}
else
{
@* How do i created a checkbox here? *@
}
@rec.ToDescription()
</td>
</tr>
}
</table>
Как следует из комментариев - я не знаю, как использовать @Html.CheckBoxFor
. Обычно для этого требуется выражение, основанное на модели, но я уверен, как связать со свойством hook, основываясь на текущем зацикленном значении перечисления. Например, он должен динамически делать @Html.CheckBoxFor(x => x.RecommendationOne)
, @Html.CheckBoxFor(x => x.RecommendationTwo)
и т. Д.
Текущее решение, которое у меня есть (работает), включает в себя создание <input>
вручную (включая скрытые поля).
Но так как я только знакомлюсь с шаблонами редакторов, надеюсь, что кто-то со стажем может направить меня в "строго типизированном" направлении.
Или есть ли лучший способ (HTML Helper), я могу это сделать?