为什么我在VS 2010中无法解决“选择”无法解决的“错误”

时间:2011-05-13 12:57:09

标签: asp.net-mvc linq

我在我的MVC应用程序中使用Html.DropDownListFor来允许用户选择一个Category。我通过在视图模型中的对象集合上使用Linq的Select方法动态创建SelectList。这是代码:

<%:Html.DropDownListFor(m => m.SelectedCategoryId, 
            Model.Categories.Select(c => new SelectListItem { Text = c.Name, Value = c.Id.ToString(), Selected = Model.SelectedCategoryId == c.Id}).ToList(),
            new{onchange = "this.form.submit();"})%>

它有效,但我想知道为什么代码完成不起作用以及为什么intelliscense没有为我的Category对象列表选择Select方法。当我运行页面时,我没有错误,但我想知道为什么Visual Studio认为代码有错误。

另一方面,这比我在View中的代码要多一些 - 将SelectList作为我的视图模型的一部分包含在内是否有意义?

1 个答案:

答案 0 :(得分:1)

是的,您的视图模型应该包含SelectListItem列表本身;它不应该在视图上派生。听起来你的视图中没有引用System.Linq;检查您的视图级别web.config,看看您的文件中是否有以下命名空间:

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Linq"/>
  </namespaces>
</pages>