我在ASP.NET MVC 5中有View
(vbhtml),它使用动态模型,我知道在C#中通过编写
@model dynamic
但是如何在vbhtml中指定它?
答案 0 :(得分:1)
vb.net中没有等效的C#Dynamic,您可以将dynamic
替换为Object
,并确保设置option strict off
。
dynamic
关键字为C#带来Option Strict Off
等效功能。
答案 1 :(得分:1)
基于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)" %>
然后您可以安全地使用这些辅助方法。
答案 2 :(得分:1)
在C#Razor中等效于@model
动态的VB是@ModelType