试图让我的项目更新到MVC3,我找不到的东西:
我有一个简单的ENUMS数据类型:
public enum States()
{
AL,AK,AZ,...WY
}
Run Code Online (Sandbox Code Playgroud)
在我的包含此数据类型的模型视图中,我想将其用作DropDown/SelectList:
public class FormModel()
{
public States State {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
非常简单:当我为这个分部类使用自动生成视图时,它忽略了这种类型.
我需要一个简单的选择列表,当我通过我的AJAX - JSON POST方法点击提交和处理时,将枚举的值设置为所选项.
而不是视图(???!):
<div class="editor-field">
@Html.DropDownListFor(model => model.State, model => model.States)
</div>
Run Code Online (Sandbox Code Playgroud)
提前感谢您的建议!
在MVC2中显示本地化枚举属性的推荐方法是什么?
如果我有这样的模型:
public class MyModel {
public MyEnum MyEnumValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和视图中的一行如下:
<%: Html.DisplayFor(model => model.MyEnumValue) %>
Run Code Online (Sandbox Code Playgroud)
我希望只是用DisplayAttribute这样注释enum值:
public enum MyEnum
{
[Display(Name="EnumValue1_Name", ResourceType=typeof(Resources.MyEnumResources))]
EnumValue1,
[Display(Name="EnumValue2_Name", ResourceType=typeof(Resources.MyEnumResources))]
EnumValue2,
[Display(Name="EnumValue3_Name", ResourceType=typeof(Resources.MyEnumResources))]
EnumValue3
}
Run Code Online (Sandbox Code Playgroud)
这不受支持.似乎还需要其他东西.实现它的最好方法是什么?
我正在尝试对单选按钮列表进行必要的验证,以强制用户选择继续选项.验证确实有效,但它只在第一个单选按钮上输出元数据,它只标记带有输入验证错误类的第一个单选按钮.
例:
<p>@Html.RadioButtonFor(x => x.Choices, SomeEnum.OptionOne)</p>
<p>@Html.RadioButtonFor(x => x.Choices, SomeEnum.OptionTwo)</p>
Run Code Online (Sandbox Code Playgroud)
产生的HTML:
<p><input class="input-validation-error" data-val="true" data-val-required="required text" type="radio" name="Choices" value="OptionOne" /></p>
<p><input type="radio" name="Choices" value="OptionTwo" /></p>
Run Code Online (Sandbox Code Playgroud)
我希望两个单选按钮都能获得验证错误级别,否则可能会使用户选择的选项存在偏差.
我能做什么?
我目前在ViewModel的顶部遇到了所有这些混乱,我觉得这违反了DTO的目的.例如,这是我的一个视图模型的构造函数 -
Dictionary<int, string> chargeGroups = new Dictionary<int, string>();
chargeGroups.Add(1, "Administration");
chargeGroups.Add(2, "Annual Leave");
chargeGroups.Add(3, "Bereavement");
chargeGroups.Add(4, "Customer Installation, Setup & Training");
chargeGroups.Add(5, "Customer Support");
chargeGroups.Add(6, "Internal Training & Education");
chargeGroups.Add(7, "Sales & Marketing");
chargeGroups.Add(8, "Sick");
chargeGroups.Add(9, "Software Devel / Maint / Test");
chargeGroups.Add(10, "Software Upgrade / Patch");
chargeGroups.Add(11, "Other");
chargeGroups.Add(12, "Other Absence");
chargeGroups.Add(13, "Warranty");
chargeGroups.Add(14, "Public Holiday");
chargeGroups.Add(15, "Other Paid Leave");
ChargeGroups = new SelectList(chargeGroups, "Key", "Value");
Run Code Online (Sandbox Code Playgroud)
我的viewmodel:
[DisplayName("Charge group")]
public short? ChargeGroup { get; set; }
public SelectList …Run Code Online (Sandbox Code Playgroud)