首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有“IEnumerable<SelectListItem>”类型的ViewData项具有键“”Profession“”

没有“IEnumerable<SelectListItem>”类型的ViewData项具有键“”Profession“”
EN

Stack Overflow用户
提问于 2011-03-09 19:47:43
回答 2查看 22K关注 0票数 7

我必须添加选择列表到注册页面。并且我想要在数据库中保存选定的项目。我有类似的东西:

在查看页面中:

代码语言:javascript
复制
<%: Html.DropDownListFor(m => m.Profession, (IEnumerable<SelectListItem>)ViewData["ProfessionList"])%>                   
<%: Html.ValidationMessageFor(m => m.Profession)%> 

在模型类中:

代码语言:javascript
复制
[Required]
[DisplayName("Profession")]
public string Profession { get; set; } 

在控制器中:

代码语言:javascript
复制
ViewData["ProfessionList"] =
                new SelectList(new[] { "Prof1", "Prof2", "Prof3", "Prof4", "Prof5"}
                .Select(x => new { value = x, text = x }),
                "value", "text");

我得到了一个错误:没有'IEnumerable‘类型的ViewData项的关键字是'Profession’。

我能做些什么来让它工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-10 03:06:45

您可以像这样在视图中定义SelectList:

代码语言:javascript
复制
<%: Html.DropDownListFor(m => m.Profession, new SelectList(new string[] {"Prof1", "Prof2", "Prof3", "Prof4", "Prof5"}, "Prof1"))%>
                <%: Html.ValidationMessageFor(m => m.Profession)%>
票数 8
EN

Stack Overflow用户

发布于 2011-03-10 01:42:28

我建议使用视图模型而不是ViewData。所以:

代码语言:javascript
复制
public class MyViewModel
{
    [Required]
    [DisplayName("Profession")]
    public string Profession { get; set; } 

    public IEnumerable<SelectListItem> ProfessionList { get; set; }
}

在你的控制器中:

代码语言:javascript
复制
public ActionResult Index()
{
    var professions = new[] { "Prof1", "Prof2", "Prof3", "Prof4", "Prof5" }
         .Select(x => new SelectListItem { Value = x, Text = x });
    var model = new MyViewModel
    {
        ProfessionList = new SelectList(professions, "Value", "Text")
    };
    return View(model);
}

在你看来:

代码语言:javascript
复制
<%: Html.DropDownListFor(m => m.Profession, Model.ProfessionList) %>
<%: Html.ValidationMessageFor(m => m.Profession) %>
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5245329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档