asp.net-mvc - ASP .NET MVC - 使用枚举作为模型的一部分

标签 asp.net-mvc asp.net-mvc-3 enums models

(刚学MVC)

我创建了一个模型类:

public class Employee
    {
        public int ID { get; set; }

        [Required(ErrorMessage="TM Number is Required")]
        public string tm_number { get; set; }

        //use enum?
        public tmRank tm_rank { get; set; }
    }

模型类是指枚举“tmRank”:
public enum tmRank
    {
        Hourly, Salary
    }

当我从此模型创建 View 时,“tm_rank”字段不会出现?我希望 MVC 会创建一个枚举值列表。

最佳答案

我的猜测是它不明白为枚举创建什么类型的字段。一个 Enum 可以绑定(bind)到一个下拉列表、一组单选按钮、一个文本框等。

你想为你的枚举输入什么类型的条目?他们应该从列表中选择它吗?回答这个问题可以帮助我们处理这种情况所需的代码。

编辑以根据您的评论添加代码:

public static SelectList GetRankSelectList()
{

    var enumValues = Enum.GetValues(typeof(TmRank)).Cast<TmRank>().Select(e => new { Value = e.ToString(), Text = e.ToString() }).ToList();

    return new SelectList(enumValues, "Value", "Text", "");
}

然后在你的模型中:
public class Employee
{
    public Employee() 
    { 
        TmRankList = GetRankSelectList();
    }

    public SelectList TmRankList { get; set; }
    public TmRank TmRank { get; set; }
}

最后你可以在你的 View 中使用它:
<%= Html.DropDownListFor(c => c.TmRank, Model.TmRankList) %>

这将保存 TmRankList 中的枚举值。当您的表单发布时,TmRank 将保存选定的值。

我在没有 Visual Studio 的情况下写了这个,所以可能会有问题。但这是我用来解决它的一般方法。

关于asp.net-mvc - ASP .NET MVC - 使用枚举作为模型的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890983/

相关文章:

asp.net-mvc - 从局部 View 访问父模型

c# - ThreadAbortException之后如何恢复?

c# - .Net Core 枚举值在获取响应后未序列化

java - 枚举元素如何在内部排列或链接?

java - (JAVA Enums) - 枚举常量内的匿名类

css - 下拉菜单的输入验证错误 CSS

c# - 上传 Blob 时 ASP.NET MVC Controller 导致页面重新加载

javascript - 在 ASP.NET MVC5 中向表单动态添加控件

asp.net-mvc - 在 ASP.NET MVC3 中使用 Razor 的文件上传控件

asp.net-mvc - ASP.NET MVC 是否有办法生成唯一的 ClientID?