C# 访问控制器上的枚举值
我有一个字段状态为的枚举C# 访问控制器上的枚举值,c#,asp.net-mvc-4,if-statement,enums,C#,Asp.net Mvc 4,If Statement,Enums,我有一个字段状态为的枚举 public status? Status { get; set; } 这个班是 public enum status { Incomplete = 0, InReview, Live, Rejected, Suspended, Scheduled, Delisted } 在我的模型中,我使用 var listStatus = new
public status? Status { get; set; }
这个班是
public enum status
{
Incomplete = 0,
InReview,
Live,
Rejected,
Suspended,
Scheduled,
Delisted
}
在我的模型中,我使用
var listStatus = new List<SelectListItem>();
listStatus.Add(new SelectListItem { Selected = true, Text = "Incomplete", Value = "Incomplete" });
listStatus.Add(new SelectListItem { Selected = false, Text = "Ready for Review", Value = "InReview" });
model.Status = listStatus;
//above are in controller to initialise z model's list
[Display(Name = "Status")]
public IEnumerable<SelectListItem> Status { get; set; }
public status selectedStatus { get; set; }
问题
在提交表单时,我希望验证用户是否选择继续
我的意思是我想做点什么
if(selectedStatus = "Incomplete")
{
//my codes hre
}
问题:
如何在控制器中访问与用户选择相匹配的枚举值?只需为未来的访问者发布对我有效的解决方案
var chosenStatus = model.selectedStatus;
if (chosenStatus == status.Incomplete)
{
}
试试这个
在获取操作中:
var statuses = from Status s in Enum.GetValues(typeof(Status))
select new { Id = (int)s, Name = s.ToString() };
ViewBag.Statuses = new SelectList(statuses, "Id", "Name", (int)Status.Live /*selected*/ );
鉴于:
@Html.DropDownListFor(model => model.StatusId, ViewBag.Statuses as IEnumerable<SelectListItem>, "Select a status" )
@Html.DropDownListFor(model => model.StatusId, ViewBag.Statuses as IEnumerable<SelectListItem>, "Select a status" )
if(model.StatusId == (int)Status.InReview)
{
// do your work..
}