我在ASP.NET MVC 5 View
(vbhtml),它採用動態模型,我知道它很容易在C#寫C#Razor中@model dynamic的VB等價物是什麼?
@model dynamic
但我怎麼能在vbhtml指定該做到這一點?
我在ASP.NET MVC 5 View
(vbhtml),它採用動態模型,我知道它很容易在C#寫C#Razor中@model dynamic的VB等價物是什麼?
@model dynamic
但我怎麼能在vbhtml指定該做到這一點?
在vb.net中沒有C#Dynamic的等價物,您可以將dynamic
替換爲Object
並確保您設置option strict off
。 的dynamic
關鍵字帶來Option Strict Off
同等功能爲C#。
基於MSDN的主要區別是:
如果後期綁定調用到實現 IDynamicMetaObjectProvider接口的對象做,Visual Basic中使用該接口綁定到 動態對象。如果後期綁定調用由 一個對象沒有實現IDynamicMetaObjectProvider 界面,但如果在調用IDynamicMetaObjectProvider接口 失敗,Visual Basic中使用後期綁定 能力的Visual Basic的結合對象運行。
因爲你提到:
問題是與後期綁定選項不嚴格
您可以通過使用後期綁定引用dynamic
對象。在C#中,可以將後期綁定對象的類型指定爲dynamic
。在Visual Basic中,您將後期綁定對象的類型指定爲Object
。欲瞭解更多信息,請參閱dynamic (C# Reference)和Early and Late Binding (Visual Basic)。
您可以通過在System.Dynamic
命名空間中的類創建自定義dynamic
對象。例如,您可以創建一個ExpandoObject
並在運行時指定該對象的成員。您也可以創建繼承DynamicObject
類的自己的類型。然後,您可以覆蓋DynamicObject
類的成員以提供運行時動態功能。
一個實例可以在MSDN找到。
更新: VB活頁夾不適用於中等信任類型爲dynamic
的東西。嘗試將您的應用設置爲完全信任。此外Option Strict On
不允許後期綁定在VB.Net中。如果你要使用強類型的輔助像Html.EditorFor
,而你的觀點是不是強類型的一類,因此,你需要以指示@Page
定義的模式類型:
<%@ Page
Language="VB"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage(Of YourApplication.YourModelClass)" %>
然後你就可以放心地使用這些輔助方法。
感謝您的回答。我想要做的是在我的View(vbhtml)文件中使用這樣的語句:'@ Html.TextBoxFor(Function(x)x.Id)''Id'在運行時綁定!如果我使用'ExpandoObject',它會導致設計時錯誤,告訴'Id'不是'ExpandoObject'的成員,這也發生在'DynamicObject'上。我所要做的就是基於我的模型動態創建我的視圖,該模型本身是動態的,並由從數據庫檢索的信息創建。它似乎是我應該尋找另一種方式mohandes;) –
@HamedZakeryMiab爲什麼你試圖使用強類型助手像'Html.EditorFor',而你的看法沒有強類型的類?請參閱我的*更新*。 –
呃,回答你的問題是非常困難的!但簡而言之,因爲我的MVC應用程序不是一個獨立的應用程序,而且在實際使用中,它可以作爲OWIN中間件應用於另一個應用程序,而這些應用程序的模型在那裏是強類型的! –
VB相當於@model
動態在C#剃刀@ModelType
問題是後期綁定選項不嚴格 –