在C#Razor中,@model动态的VB等价物是什么?

时间:2015-06-21 05:02:18

标签: asp.net-mvc vb.net razor

我在ASP.NET MVC 5中有View(vbhtml),它使用动态模型,我知道在C#中通过编写

很容易做到这一点
@model dynamic

但是如何在vbhtml中指定它?

3 个答案:

答案 0 :(得分:1)

vb.net中没有等效的C#Dynamic,您可以将dynamic替换为Object,并确保设置option strict offdynamic关键字为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