ASP> net MVC可重用部分

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

例如,我想在我的网站的会员区域内有一些“小部件”,其中之一是登录用户帐户经理的详细信息。 我可以将其创建为部分,但是当页面加载数据需要作为ViewModel / View Data的一部分传递时。 我想在很多不同的章节中使用这个小部件,这就意味着我需要把代码传递给许多不同的控制器。 这似乎违反了DRY原则,还是我在这里错过了一些东西? 理想情况下,我希望将所有内容封装在1部分内,然后可以在任何页面中使用。


你可以采取三种方式:

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

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

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

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

链接地址: http://www.djcxy.com/p/49907.html

上一篇: ASP>net MVC reusable partials

下一篇: Entity framework (CTP5, Fluent API). Rename column of navigation property