因爲ViewBag
是dynamic
類型,所以擴展方法不會在其屬性上被拾取而不會先轉換爲適當的類型。
例如:
@(((string)ViewBag.stringProperty).Trunctate())
個人而言,我限制我的ViewBag
使用,以避免投無處不在(除其他原因)。相反,我爲每個視圖使用強類型的視圖模型。
爲了完整起見,也可以,如果包含擴展命名空間是不是在你的視圖中引用遇到此錯誤。
您可以在您的意見坐在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="MyProject.Extensions" />
</namespaces>
</pages>
</system.web.webPages.razor>
或者,你可以在剃鬚刀視圖本身中導入名稱空間:
@using MyProject.Extensions
你有沒有投的viewBag對象爲字符串? – 2013-03-21 16:23:58
@四十二,沒有。從字面上看,我是這樣做的:'@ ViewBag.object.stringProperty.Trunctate()'其中'object'是一個模型實例,它有幾個字符串屬性。 – nameless 2013-03-21 16:27:32