3

整数値を持つドロップダウンリストをレンダリングしていますが、SelectListItem値属性は文字列のみを受け入れるため、変換が必要です。.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?)

System.Data.Entity へのプロジェクト参照が既にあり@using System.Data.Objects.SqlClient、私のビューにもあります。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 に答える