为什么我会收到“错误”消息“选择”在VS 2010中无法解决

发布于 2024-11-07 17:01:01 字数 600 浏览 0 评论 0原文

我在 MVC 应用程序中使用 Html.DropDownListFor 来允许用户选择类别。我通过对视图模型中的对象集合使用 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 没有为我的类别对象列表选择 Select 方法。当我运行该页面时,没有任何错误,但我想知道为什么 Visual Studio 认为代码存在错误。

顺便说一句,这比我在视图中想要的代码要多一些——将 SelectList 作为我的视图模型的一部分包含在内是否有意义?

I am using the Html.DropDownListFor in my MVC application to allow users to select a Category. I am creating the SelectList dynamically by using Linq's Select method on a collection of objects in my view model. Here is the code:

<%: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();"})%>

It works but I'm wondering why code completion doesn't work and why intelliscense is not picking up the Select method for my List of Category objects. When I run the page I have no errors, but I'm wondering why Visual Studio thinks there are errors with the code.

On a side note, this is a bit more code than I would like in a View-- does it make sense to include the SelectList as part of my view model?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

踏雪无痕 2024-11-14 17:01:01

是的,您的视图模型应该包含 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>

Yes, your view model should contains the SelectListItem list itself; it shouldn't be derived on the view. It sounds like you don't have System.Linq referenced on your view; check your view level web.config and see if you have the following namespace in your file:

<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>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文