3

我正在渲染一个具有整数值的下拉列表,并且SelectListItemvalue 属性只接受一个字符串,因此需要进行转换。.ToString()功能无法使用。

@Html.DropdownList("ddl", Model.recordList.Select(
       q => new SelectListItem 
       { 
         Text = q.recordName, 
         Value = SqlFunctions.StringConvert(q.recordId) 
       }
       , "choose one")

// recordId is an Integer

我在运行时收到程序集引用错误:

The type or namespace name 'Objects' does not exist in the namespace 
'System.Data' (are you missing an assembly reference?)

@using System.Data.Objects.SqlClient在我的视图中已经有一个对 System.Data.Entity 的项目引用。我也期待这一点,因为它没有出现在 Intellisense 中。我可以在Controllers中使用,但不能在 Views中使用。

我在这里违反了任何 MVC 规则吗?还是可能配置错误?

4

1 回答 1

1

这是配置错误。

为了解决,我不得不:

1) 将其添加到Views/Web.config.

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.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.Optimization" />
            <add namespace="System.Web.Routing" />
            <add namespace="System.Data.Entity" />
            <add namespace="System.Data.Objects.SqlClient" />
        </namespaces>
    </pages>
</system.web.webPages.razor>

2) 更改Project > References > System.Data.Entity属性Copy Local= True。程序集没有被复制到bin,因此标识为missing.

于 2012-10-31T13:05:53.667 回答