ASP> net MVC可重用部分

时间:2011-01-11 11:16:43

标签: asp.net-mvc-2

在winforms和ASP.net中使用.net几年后,我现在开始进入MVC(我知道的有点晚了)。对我来说,一个主要的困惑是可重用的“组件”的概念,类似于webforms中用户控件的概念。

例如,我想在我的网站的成员区域中有一些“小部件”,其中一个是登录用户帐户管理器的详细信息。我可以将其创建为部分,但是当页面加载时,需要将数据作为ViewModel / View Data的一部分传入。我想在许多不同的部分中使用这个小部件,这意味着我需要将代码放入到许多不同的控制器中。这似乎违反了DRY原则,或者我在这里遗漏了什么?理想情况下,我希望将所有内容封装在1部分中,然后可以在任何页面中使用。

1 个答案:

答案 0 :(得分:4)

你可以采取三种方式:

1)对于没有太多逻辑的简单控件,您可以为控件创建自定义视图模型的新实例: Html.RenderPartial(“YourControl”,新的YourControlViewModel(){Param1 =“value1”,Param2 = Model.AnotherValue});

2)如果你需要一些控制的后端逻辑,你可以使用 Html.RenderAction(“ActionName”,“SomeControllerName”,RouteValuesDictionary); 它将调用标准控制器操作,使用视图,并将结果输出插回页面。您可以将[ChildActionOnly]属性添加到控制器方法,以确保该方法仅可从Html.RenderPartial中使用。它略微违反了MVC原则(视图不应该调用控制器),但它非常适合小部件,并且它在Ruby on Rails世界中使用没有太多问题。您可以查看Haacked

中的精彩文章

3)为自定义日期格式化,计算等任务创建自定义html助手。

在你的情况下,我会选择第二位。