我将如何配置我的视图模型和视图,支持包含以下枚举下拉列表默认值:DropDownListFor从枚举使用视图模型
public enum PersonType
{
Bride,
Groom
}
我想下拉的文字显示“新娘” ,“新郎”,值分别为0和1。我想为视图配置一个默认(新娘或新郎)。这是为了创建一个“创建”表单,我将发布并稍后确定选择了哪个选项(我猜我需要在我的ViewModel中使用int来跟踪用户选择的内容)。这将如何连线?我正在使用剃刀。
我将如何配置我的视图模型和视图,支持包含以下枚举下拉列表默认值:DropDownListFor从枚举使用视图模型
public enum PersonType
{
Bride,
Groom
}
我想下拉的文字显示“新娘” ,“新郎”,值分别为0和1。我想为视图配置一个默认(新娘或新郎)。这是为了创建一个“创建”表单,我将发布并稍后确定选择了哪个选项(我猜我需要在我的ViewModel中使用int来跟踪用户选择的内容)。这将如何连线?我正在使用剃刀。
public enum PersonType
{
Bride=0,
Groom=1
}
在模型中,你会在你的控制器
,并在你看来有这样
public class mymodel{
[Required(ErrorMessage="this field is required")]
public int ID{get;set;}
public IEnumerable<KeyValuePair<string, string>> _list{get;set}
}
属性
@Html.DropDownListFor(x=>x.ID,new SelectList(model._list,"key","value"))
@ValidationMessageFor(x=>x.ID)
我已经创建了一个的HtmlHelper枚举 - 并设置一个默认字符串te如果模型类型是枚举,则使用该帮助器。
这意味着我可以去@Html.EnumDropDownListFor(x => x.PersonType)
,它会显示带有枚举选项的下拉列表。
我从this博客复制的帮手,并添加以下到\共享\ EditorTemplates \ String.cshtml字符串模板
@model object
@if (Model is Enum)
{
@Html.EnumDropDownListFor(x => x)
}
else
{
@Html.TextBoxFor(x => x)
}
这意味着我将得到任何枚举的下拉列表,而不担心改变视图模型。
帮助程序不会将选择框的值设置为底层数字,但它仍会绑定到操作参数。您应该能够很容易地编辑助手,让他们轻松地将底层编号作为下拉列表的一部分。
他需要的值是int,除此之外,这是要走的路。 – 2011-12-22 02:32:08
谢谢!我如何在视图中将它默认为“新郎”?我可以发送“选定的值”吗? – 2011-12-22 02:33:54
只是反转您的枚举值 – Rafay 2011-12-22 02:42:40