ASP.NET MVC通用用户控件

时间:2011-04-01 23:16:38

标签: asp.net-mvc generics controls

我在vanilla ASP.NET中创建了一个通用用户控件:

  • 通过set属性,它会从页面A或B中获取大量元数据,或者它恰好存在于其中的任何父页面。

  • 此用户控件有时会有多个副本,每个副本当然会在一个页面上处理不同的元数据。

  • 在代码隐藏中,用户控件根据其元数据动态呈现子元素。

我现在正在研究ASP.NET MVC。今天是这种活动的第一天,我不知道如何移植这个用户控件的通用性。页面与控制器有一对一的关系吗?用户控件怎么样?我的通用用户控制链接会直接链接到一个或多个控制器吗?如果是这样,这个链接是如何分配的?或者每个控制器是否只将视图数据传递给用户控件?

任何人都可以为我的场景提供高级设计思路吗?或者指出有用的链接?

3 个答案:

答案 0 :(得分:0)

哦,男孩......

Asp.Net mvc的概念也与RESTful风格的网站结构密切相关。我不打算再次解释MVC,因为有很多文章如http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx

至于用户控制,整个概念是你不应该在所有页面上复制并提供相同的功能。相反,您将创建一个局部视图,并将该局部视图POST数据转换为特定的URL。

然后,您在页面上有多个表单元素,所有表单元素都发布到特定的URL,每个元素都提供页面该部分的功能。

E.G。登录框 - >带有登录/密码输入的表单元素,发布到/ Account / Login

注册框 - >带有姓名/电子邮件/密码输入的表单元素,发布到/ Account / Register

等等。

你真的需要放弃你在WebForm中学到的很多东西才能开始使用MVC。

编辑 - 我相信学习MVC的最佳方式是通过一个小项目进入并开始。也是一条建议。 Asp.Net mvc有很多你想要遵循的“惯例”。

EG。 / home / index的默认页面。默认页面是/ index。文件夹命名结构。

当然,你可以改变所有这些,但你通常只是在浪费时间。

答案 1 :(得分:0)

实际上,只是为了指明你的方向,你可以看看以下内容:

通过自定义视图引擎从序列化源(例如sql / resource embedded string)加载视图。

OR Custom Html helper扩展方法。

其中一个和

自定义控制器工厂/激活器(用于在MVC网站或引用的bin文件之外提供控制器+操作)

将事件挂钩到自定义用户控件的方法。我头脑中的第一件事是依赖注入。 (将服务注入您打包的控制器操作,作为序列化部分视图的控制器)

因此,为了使用“粒度,自包含”的用户控件,您需要使用这些基础架构,并以特殊方式打包控件。

或者你可以在MVC中使用普通的旧用户控件。我认为这有效(谷歌了)

答案 2 :(得分:0)

一些想法让你滚动。希望这会有所帮助。

  • 在考虑MVC时,将“视图”视为传统的“页面”,而不考虑代码。 “视图”具有控件和HTML以及其他呈现特定逻辑。

  • 后面的传统代码被替换为“模型”。 Controller包含逻辑,决定将模型的对象实例传递给“View”

  • “控制器”未与任何视图硬链接。考虑它的最佳方式。控制器可以处理多个“动作”。每个“Action”的处理代码都可以返回“View”。这是呈现给用户的“视图”。

  • 视图可以在控制器内以及控制器之间的多个操作之间共享。

  • 您可以灵活地将视图分解为部分视图(类似于母版页/内容页面概念)

从这个角度来看,这是一种可行的方法。

获取几个.aspx页面并将其更改为视图。在这样做时尝试将代码隐藏中的代码重构为模型。您找到的任何调用数据库并创建要呈现的数据对象的代码,将它们移动到控制器中。

以您的通用用户控件为例,将其转换为视图,并将其作为部分视图使用您转换为视图的上述.aspx页面。

练习应该让你很清楚你的移植选项是什么。