Asp.net-Mvc

ASP .NET MVC - 使用列舉作為模型的一部分

  • December 30, 2013

(剛學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
   }

當我從此模型創建視圖時,“tm_rank”欄位不會出現?我希望 MVC 會創建一個列舉值列表。

我的猜測是它不明白為列舉創建什麼類型的欄位。一個 Enum 可以綁定到一個下拉列表、一組單選按鈕、一個文本框等。

你想為你的列舉輸入什麼類型的條目?他們應該從列表中選擇它嗎?回答這個問題可以幫助我們處理這種情況所需的程式碼。

編輯以根據您的評論添加程式碼:

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; }
}

最後你可以在你的視圖中使用它:

<%= Html.DropDownListFor(c => c.TmRank, Model.TmRankList) %>

這將保存 TmRankList 中的列舉值。當您的表單發佈時,TmRank 將保存選定的值。

我在沒有 Visual Studio 的情況下寫了這個,所以可能會有問題。但這是我用來解決它的一般方法。

引用自:https://stackoverflow.com/questions/4890983