Почему я получаю "ошибку", которую "Выбрать" нельзя устранить в VS 2010

Я использую Html.DropDownListFor в своем приложении MVC, чтобы позволить пользователям выбирать категорию. Я создаю SelectList динамически, используя метод Select Linq для коллекции объектов в моей модели представления. Вот код:

<%: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 не использует метод Select для моего объекта List of Category. Когда я запускаю страницу, у меня нет ошибок, но мне интересно, почему Visual Studio считает, что в коде есть ошибки.

Кстати, это немного больше кода, чем хотелось бы в View. Имеет ли смысл включать SelectList как часть моей модели представления?

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>

Другие вопросы по тегам