繁体   English   中英

如何使用枚举中的值从ASP.NET MVC Web应用程序中的模型填充下拉列表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM