代码之家  ›  专栏  ›  技术社区  ›  Bittercoder

ASP.NETMVC框架是否有与单轨视图组件等效的组件?

  •  4
  • Bittercoder  · 技术社区  · 17 年前

    我大量使用 View Components 在我在Monorail中构建的一些较大的应用程序中,对于可以支持节等的视图组件,ASP.NETMVC中的等效方法是什么。?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Sephiroth    17 年前

    1: 最简单的方法是创建一个ViewUserControl,并使用Html.RenderPartial和帮助器显示它。ViewUserControl是一个简单的标记,没有支持控制器(我认为如果需要,可以放置代码隐藏文件)。

    <% Html.RenderPartial("TopBar", model); %>
    

    2:

    public class AboutComponentController : Controller {
    public IRepository Repository{ get; set; }
    
    public ActionResult Detail() {
        var lastEvent = Repository.FindAll<Auditoria>().FirstOrDefault();
        return View(lastEvent);
    }
    

    请注意,我是如何引用一个IRepository的,它将被注入IoC(在我的例子中是Windsor),我可以做任何正常控制器会做的事情。

    现在,在要使用组件的任何页面(主页面或普通页面)中,导入Microsoft.Web.Mvc并使用适当的参数调用Html.RenderAction。这将创建一个小型mvc管道,该管道创建控制器、解析视图等,就像单轨视图组件一样。我更喜欢使用基于lambda的方法变体,如下所示:

    <% Html.RenderAction<AboutComponentController>(x => x.Detail("a message"));%>
    

    我不在组件视图中使用母版页或布局,因为它们本身就是合成元素。

    请记住,在使用Webforms视图引擎时,如果希望在代码块中使用模型变量时使用intellisense,则可以使用强类型视图。

        2
  •  0
  •   Kris    17 年前

    菲尔·哈克 blogged 关于创建区域以将控制器分组到类似于Monorail的子文件夹/分区中。

    推荐文章