Простите мое невежество. Не сделано много работы MVC, и я уверен, что должен быть лучший способ сделать это, но я не могу найти его. У меня есть флаги ENUM, как это:Как уменьшить дублирование кода в представлении ASP.NET MVC при работе с флагом enum
[Flags]
public enum Services
{
Foo = 1,
Bar = 2,
Meh = 4
}
и свойство SelectedServices на моей модели, которая имеет значение этого типа. В представлении у меня есть флажок для каждой возможной службы. Я реализовал логику привязки следующим образом:
<div><label><input type="checkbox" name="services" value="@((int)Services.Foo)"
@if(Model.SelectedServices.HasFlag(Services.Foo))
{
<text>checked</text>
}
/>Foo</label></div>
<div><label><input type="checkbox" name="services" value="@((int)Services.Bar)"
@if(Model.SelectedServices.HasFlag(Services.Bar))
{
<text>checked</text>
}
/>Bar</label></div>
И так далее. Это работает, но на самом деле ужасно грязно.
Должен быть, конечно, лучший способ инкапсулировать это, но я понятия не имею, какова соответствующая концепция в MVC?
поиск Google дал меня [это] (http: // stackov erflow.com/questions/388483/how-do-you-create-a-dropdownlist-from-an-enum-in-asp-net-mvc); не уверен, что это именно то, что вам нужно, но должно дать вам представление о том, что вам нужно сделать. –
Создайте модель представления с помощью 'bool IsFoo' и' bool IsBar' и 'bool IsMeh', тогда вы можете использовать строго типизированный' Html .CheckBoxFor() 'для генерации флажков –