ASP.NET MVC-asp.net mvc3中 DropDownListFor 绑定枚举类型

小组事务管理 小组事务管理 主题:974 回复:1955

ASP.NET MVC-asp.net mvc3中 DropDownListFor 绑定枚举类型

虐人心 发布于 2017-02-23 字数 333 浏览 1094 回复 3

使用强类型绑定一个枚举类型
如下:
@Html.DropDownListFor(model => model.SaleStatus, (IEnumerable<SelectListItem>)ViewBag.Salestatus)
@Html.ValidationMessageFor(model => model.SaleStatus)
问题出现了,在提交的时候我用的是实体类的验证,客户端验证失效,
而且在编辑的时候,无法赋值。请高手帮忙!

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(3

想挽留 2017-08-27 3 楼

赋值的代码可以贴出来看看,我记得如果绑定一个枚举类型,使用SelectedValue赋值时应该使用枚举的名称而不是值,可以检查一下。或者试试使用Add()方法进行赋值,同时应该注意用户控件是否加了属性,如果没有,加属性试试。

偏爱自由 2017-08-19 2 楼

Asp.net mvc 接触的不多
给你个例子的链接
Creating a DropDownList helper for enums

甜柠檬 2017-04-22 1 楼

一、创建一个如下的扩展方法 :

public static SelectList ToSelectList<TEnum>(this TEnum enumObj)
{
var values = from TEnum e in Enum.GetValues(typeof(TEnum))
select new { ID = e, Name = e.ToString() };

return new SelectList(values, "Id", "Name", enumObj);
}

二、控制器里代码如下(其中POStatus是枚举类型):

public virtual ActionResult Edit(Guid? Id)
{
var item = _Purchase_BLL.Get(Id);
ViewData["status"] = ((POStatus)item.Status).ToSelectList();
return View(item);
}

三、前台代码如下所示:

<th width="15%" align="right">
<%: Html.LabelFor(model => model.Status)%>
</th>
<td width="35%">
<%: Html.DropDownListFor(model => model.Status, ViewData["status"] as SelectList)%>
<%: Html.ValidationMessageFor(model => model.Status)%>
</td>