通用视图模型控制 (MVC)

Posted

技术标签:

【中文标题】通用视图模型控制 (MVC)【英文标题】:generic viewmodel control (MVC) 【发布时间】:2010-12-06 06:59:04 【问题描述】:

我正在尝试创建一个通用的用户控件。 所以我需要一个带有通用参数的用户控件。

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IPager<T>>" %>

控件并不真正关心 T 是什么。它适用于任何 T。

当我渲染控件时,我可以使用泛型参数对其进行实例化。

<%= html.RenderPartial<MyClass>("Pager", Model); %>

这是基本思想——有没有办法制作一个需要额外通用参数的用户控件。如果我想构建这样的东西,我会从哪里开始?

有什么想法吗?

【问题讨论】:

【参考方案1】:

如果您使用的是 .NET 4.0,则可以在 &lt;%@Control %&gt; 声明中使用 IPager&lt;object&gt;。然后,协变泛型支持意味着您可以将 IPager&lt;MyClass&gt; 作为模型传递给 RenderPartial,它仍然可以正常工作。

【讨论】:

你是对的,我在工作室 2008 中尝试过这种方法,但它不起作用。您需要协变类型。我将尝试并激励使用新框架。可惜它不适用于 2008。它应该有。

以上是关于通用视图模型控制 (MVC)的主要内容,如果未能解决你的问题,请参考以下文章

具有封装/防御性编程的 MVC(模型视图控制器)

MVC多个数据模型传递给一个视图[重复]

mvc一个视图能不能使用两个模型类

MVC中视图和模型之间的通信

Android 是不是支持 MVC(模型视图控制器)结构?

模型-视图-控制器模式