Asp.net mvc 在我的岗位上。我已经改正了。我试图简化它,但没有添加额外的级别,它实际上只是一个名称,没有任何意义。我已经检查过,我从控制器传递到视图的内容和我在视图中指定的模型是相同的。我还把我所有的“模型”字都改成了“x”,这样就不用@LabelFor(Model=>

Asp.net mvc 在我的岗位上。我已经改正了。我试图简化它,但没有添加额外的级别,它实际上只是一个名称,没有任何意义。我已经检查过,我从控制器传递到视图的内容和我在视图中指定的模型是相同的。我还把我所有的“模型”字都改成了“x”,这样就不用@LabelFor(Model=>,asp.net-mvc,asp.net-mvc-3,model,drop-down-menu,Asp.net Mvc,Asp.net Mvc 3,Model,Drop Down Menu,在我的岗位上。我已经改正了。我试图简化它,但没有添加额外的级别,它实际上只是一个名称,没有任何意义。我已经检查过,我从控制器传递到视图的内容和我在视图中指定的模型是相同的。我还把我所有的“模型”字都改成了“x”,这样就不用@LabelFor(Model=>Model.CateogoriesList)我有@LabelFor(x=>x.CateogoriesList)我也在实际的下拉列表中尝试了它,这是我得到编译错误的地方@DropDownList(“Category”,newselectlist(



在我的岗位上。我已经改正了。我试图简化它,但没有添加额外的级别,它实际上只是一个名称,没有任何意义。我已经检查过,我从控制器传递到视图的内容和我在视图中指定的模型是相同的。我还把我所有的“模型”字都改成了“x”,这样就不用@LabelFor(Model=>Model.CateogoriesList)我有@LabelFor(x=>x.CateogoriesList)我也在实际的下拉列表中尝试了它,这是我得到编译错误的地方@DropDownList(“Category”,newselectlist(x.CateogoriesList)),但我仍然有同样的问题。编译器错误消息:CS0135:“Model”与声明“System.Web.Mvc.WebViewPage.Model”冲突。我不确定为什么会出现错误,但我仍然会出现。您好,我的帖子中的控制器和视图之间的差异是一个错误。我已经改正了。我试图简化它,但没有添加额外的级别,它实际上只是一个名称,没有任何意义。我已经检查过,我从控制器传递到视图的内容和我在视图中指定的模型是相同的。我还把我所有的“模型”字都改成了“x”,这样就不用@LabelFor(Model=>Model.CateogoriesList)我有@LabelFor(x=>x.CateogoriesList)我也在实际的下拉列表中尝试了它,这是我得到编译错误的地方@DropDownList(“Category”,newselectlist(x.CateogoriesList)),但我仍然有同样的问题。编译器错误消息:CS0135:“Model”与声明“System.Web.Mvc.WebViewPage.Model”冲突。我不确定为什么会出现错误,但我仍然会出现错误。您好,我尝试了上面评论中提到的建议,但无效。我相信问题出在我创建下拉列表的实际行上。如果您仍然得到相同的错误,我将检查您是否以错误的方式在代码中的其他任何位置使用关键字模型谢谢Geertvdc,我目前实际上没有在我的视图中的任何位置使用关键字模型。除了在@model语句中,它甚至没有出现过一次。您好,我已经尝试了上面评论中提到的建议,但没有效果。我相信问题出在我创建下拉列表的实际行上。如果您仍然得到相同的错误,我将检查您是否以错误的方式在代码中的其他任何位置使用关键字模型谢谢Geertvdc,我目前实际上没有在我的视图中的任何位置使用关键字模型。除了在@model语句中,它甚至不会出现一次。嗨,Vincent,这也不是问题所在。我按照你的建议做了修改,但不是这样。问题就在这一行@Html.DropDownList(“Category”,new SelectList(x.CateogoriesList))嗨,凯文,你没有仔细观看视频,或者视频没有为下拉列表框添加标签。我已经在本地机器上创建了您的演示。我的回答是正确的。请仔细阅读我的答案,你可以去掉标签看看它是否有效。否则,我可以向您发送我的测试项目,它与您的测试项目完全相同(除了我使用字符串数组而不是用于categoriesList的IQuerable)。将标签更改为CategoryId后,一切正常。查看我的新代码回复Hi Vincent。。。他肯定使用了不同的类型来创建下拉列表。我正在使用EntityFramework4从数据库中检索数据。所以我很自然地得到了一个易读的对象。如果问题出在我使用的类型上。。。如何将IQueryable强制转换为下拉列表构造函数可以接受的更简单的对象?下面的查询是如何检索数据。。。CateogoriesList=从c到_db.Categories orderby c.Name选择c.Name;因此,答案是关于SelectList构造函数将接受的对象类型的。我将用答案编辑我的原始帖子。很高兴看到你终于开始工作了。我只是再做一次尝试,类型没有问题,即使你返回IQuerable,它仍然工作。我会把我的密码贴在我的答案部分。嗨,文森特,这也不是问题所在。我按照你的建议做了修改,但不是这样。问题就在这一行@Html.DropDownList(“Category”,new SelectList(x.CateogoriesList))嗨,凯文,你没有仔细观看视频,或者视频没有为下拉列表框添加标签。我已经在本地机器上创建了您的演示。我的回答是正确的。请仔细阅读我的答案,你可以去掉标签看看它是否有效。否则,我可以向您发送我的测试项目,它与您的测试项目完全相同(除了我使用字符串数组而不是用于categoriesList的IQuerable)。将标签更改为CategoryId后,一切正常。查看我的新代码回复Hi Vincent。。。他肯定使用了不同的类型来创建下拉列表。我正在使用EntityFramework4从数据库中检索数据。所以我很自然地得到了一个易读的对象。如果问题出在我使用的类型上。。。如何将IQueryable强制转换为下拉列表构造函数可以接受的更简单的对象?下面的查询是如何检索数据。。。CateogoriesList=从c到_db.Categories orderby c.Name选择c.Name;因此,答案是关于SelectList构造函数将接受的对象类型的。我将用答案编辑我的原始帖子。很高兴看到你终于开始工作了。我只是再做一次尝试,类型没有问题,即使你返回IQuerable,它仍然工作。我将在我的答案部分发布我的代码。
public class Project
{
    public Project()
    {
        CategoryId = 0;
        Name = "";
        Description = "";
        //Categories = new Dictionary<int, string>();

        Entities _db = new Entities(); //ef4
        CateogoriesList = from c in _db.Categories 
                        orderby c.Name
                        select c.Name;
    }

    public int CategoryId { get; set; }

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "Project Name")]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.MultilineText)]
    [Display(Name = "Project Description")]
    public string Description { get; set; }

    public IQueryable<string> CateogoriesList;

}
public ActionResult Create()
{
    Models.Project.Project proj = new Models.Project.Project();
    return View(proj);
}
@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@model Models.Project.Project


@using (Html.BeginForm())
{
    @Html.ValidationSummary(true);

    <fieldset>
        <legend>Submit Your Request</legend>
        <div class="editor-label">@Html.LabelFor( Model => Model.CateogoriesList  )</div>
        <div class="editor-field">
            @Html.DropDownList("Category", new SelectList( Model.CateogoriesList ) )
        </div>
    </fieldset>
    <p><input type="submit" value="Send for RFP" /></p>
}
    Riebro.RiebroEntities _db = new Riebro.RiebroEntities();
    CategoriesList = (from c in _db.Categories 
                    orderby c.Name
                    select c.Name).ToArray<string>();
}


[Display(Name = "Choose a category")]
public string[] CategoriesList;
@Html.DropDownList("Category", new SelectList(Model.CategoriesList))
@model Models.Project.Project
public ActionResult Create()
{
    Riebro.Models.Project.Project proj = new Riebro.Models.Project.Project();
    return View(proj);
}
@Html.LabelFor(Model => Model.CateogoriesList)
<div class="editor-label">@Html.LabelFor( Model => Model.CateogoriesList  )</div>
<div class="editor-label">@Html.LabelFor( m=> m.CateogoriesList  )</div>
  <div class="editor-label">@Html.LabelFor( Model => Model.CateogoriesList  )</div>
      <div class="editor-label">@Html.LabelFor( Model => Model.CategoryId  )</div>

@using (Html.BeginForm())
{
@Html.ValidationSummary(true);

<fieldset>
    <legend>Submit Your Request</legend>
    <div class="editor-label">@Html.LabelFor(x=>x.CategoryId )</div>
    <div class="editor-field">
        @Html.DropDownList("Category", new SelectList(Model.CateogoriesList) )            
    </div>
</fieldset>
<p><input type="submit" value="Send for RFP" /></p>
}
    public class Project {
    public Project() {
        CategoryId = 0;
        Name = "";
        Description = "";
        //Categories = new Dictionary<int, string>();

        //Entities _db = new Entities(); //ef4
        //CateogoriesList = from c in _db.Categories
        //                  orderby c.Name
        //                  select c.Name;
        //IQueryable<string> categoriesList = (new string[] { }).AsQueryable();
        CateogoriesList = new string[] { "abc", "def", "hij", "klm" };
        CategoriesList2 = (new string[] { "abc", "def", "hij", "klm" }).AsQueryable();
    }

    public int CategoryId { get; set; }

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "Project Name")]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.MultilineText)]
    [Display(Name = "Project Description")]
    public string Description { get; set; }

    public string[] CateogoriesList;

    public IQueryable<string> CategoriesList2;

}
@model MvcApplication3.Models.Project


@using (Html.BeginForm())
{
  @Html.ValidationSummary(true);

  <fieldset>
    <legend>Submit Your Request</legend>
    <div class="editor-label">@Html.LabelFor(x=>x.CategoryId )</div>
    <div class="editor-field">
        @Html.DropDownList("Category", new SelectList(Model.CategoriesList2) )            
    </div>
  </fieldset>
  <p><input type="submit" value="Send for RFP" /></p>
}