[英]How can I use values from an enum to populate a dropdownlist from my model in an ASP.NET MVC web application?
在我的模型中,我有一个名为Reasons
的属性。 我希望用户能够从一小部分原因中进行选择。 该列表将如下所示:
PR Promotional
CL Customer Related
SL Supplier Related
我尝试为此使用枚举,但似乎无法正常工作。 当我尝试将Reasons
作为模型的属性时,Intellisense不会将Reasons
识别为模型的属性(是的,它设置为public
)。 最好的方法是什么? 我绝对不认为在这种情况下使用数据库是必要的,我宁愿避免使用数据库。 谢谢你的帮助。 我正在使用ASP.NET MVC 5。
编辑-有关该问题的更新
经过更多测试后,我意识到问题是由于ViewModel的设置方式而发生的。 我的ViewModel包含一个引用我其他模型之一的属性,该属性引用了所有其他模型。 我编写这些类的目的是基于预定的XML结构将它们序列化为XML。 这是一个例子:
<MyViewModel>
<Property>
</Property>
<ReferenceToOtherModel>
<OtherModel1>
<ReferenceToOtherModel2>
</ReferenceToOtherModel2>
</OtherModel1>
</ReferenceToOtherModel>
</MyViewModel>
总而言之, MyViewModel
是XML结构的根,因此我无法在ViewModel本身中放置一个属性以用作枚举的链接。
编辑2:
我收到的错误消息是这样的:“ model.otherModel1.otherModel2.Reasons is a type, which is not valid in the given context. Reasons: cannot reference a type through an expression; try 'otherModel2.Reasons' instead."
不幸的是,如果没有完全限定名称,则无法引用othermodel2,该名称可以追溯到错误消息的第一句。
假设您有这样的枚举
public enum Reasons
{
[Display(Name = "Promotional")]
Promotional,
[Display(Name = "Customer Related")]
CustomerRelated,
[Display(Name = "Supplier Related")]
SupplierRelated
}
并且您的视图模型具有此类型的属性
public class YourViewModel
{
public Reasons Reason { set; get; }
}
您可以使用Html.EnumDropDownListFor
辅助方法
@model YourViewModel
@using (Html.BeginForm("Create", "Issue", FormMethod.Post))
{
@Html.EnumDropDownListFor(s=>s.Reason, "select one")
}
我只是使用Promotional
而不是PR
因为这对我而言更具可读性。 您可以根据需要更新该部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.