在ASP.NET MVC中封装用户控件

Chr*_*rts 5 asp.net-mvc user-controls ascx

很抱歉,如果这是一个基本问题 - 我在从页面框架转换到ASP.NET MVC时遇到了一些麻烦.

在页面框架中,我经常使用ASCX文件来创建小的,封装的功能块,这些功能在整个站点的各个位置都会被覆盖.如果我正在构建一个页面,我需要其中一个控件 - 我只需添加一个引用,一切正常.

据我所知,在MVC中,ASCX文件只是一个局部视图.这是否意味着无论我想在哪里添加其中一个功能单元,我还必须在控制器的操作方法中添加一些代码,以确保相关的ViewData可用于ASCX?

如果是这种情况,对我来说似乎有点退步.例如,这意味着我不能将控件"删除"到母版页中,而无需向每个视图使用该母版页的控制器添加代码!

我怀疑我错过了什么 - 任何帮助都会受到赞赏.

谢谢, - 克里斯

Rob*_*vey 3

据我所知,在 MVC 中,ASCX 文件只是一个部分视图。这是否意味着无论我想要添加这些功能单元之一,我还必须向控制器的操作方法添加一些代码,以确保相关的 ViewData 可用于 ASCX?

是的。

但是,您可以在视图中使用RenderAction方法来代替RenderPartial,并且所有功能(包括传递到子视图的数据)都将被封装。

换句话说,这将创建一个包含控制器方法、视图数据和部分视图的小包,可以从主视图中使用一行代码来调用它。