Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC 3呈现视图;多态性;使用DisplayFor(TBase o)类语法_Asp.net_Asp.net Mvc 3_Views - Fatal编程技术网

ASP.NET MVC 3呈现视图;多态性;使用DisplayFor(TBase o)类语法

ASP.NET MVC 3呈现视图;多态性;使用DisplayFor(TBase o)类语法,asp.net,asp.net-mvc-3,views,Asp.net,Asp.net Mvc 3,Views,使用ASP.NET MVC 3,我希望根据运行时提供的视图模型(或视图模型上的属性)的类型,向我的视图呈现不同的“模板”(即局部视图或您想要调用它们的任何内容) 我知道现成的ASP.NET MVC功能允许向提供给视图的viewmodel上的属性或字段添加UIHint属性,但据我所知,这不符合我的需要,因为我在运行时之前不知道所需的模板 AFAICT ASP.NET也不支持t类型的通用viewmodels,因此我的想法是采用ASP.NET MVC3源代码并编写我自己的DisplayFor方法,该方

使用ASP.NET MVC 3,我希望根据运行时提供的视图模型(或视图模型上的属性)的类型,向我的视图呈现不同的“模板”(即局部视图或您想要调用它们的任何内容)

我知道现成的ASP.NET MVC功能允许向提供给视图的viewmodel上的属性或字段添加UIHint属性,但据我所知,这不符合我的需要,因为我在运行时之前不知道所需的模板

AFAICT ASP.NET也不支持t类型的通用viewmodels,因此我的想法是采用ASP.NET MVC3源代码并编写我自己的DisplayFor方法,该方法接受viewmodel实例(由视图中的抽象基类型指定),该实例在运行时解析实际类型,并使用此方法按约定查找模板名称

这听起来可行/值得吗


视图看起来是这样的(请注意,对于基类型的规范,将在运行时提供一个具体实例):

视图模型:

public class MyMagicalViewModel : MyViewModelBase {}
该视图的调用看起来是这样的:

...
return View("MyView", MyMagicalViewModel);
...
…这将返回与MyMagicalViewModelPartialView.cshtml相对应的html,您查看了吗

...
return View("MyView", MyMagicalViewModel);
...