据我所知,在ASP.NET MVC中,httprequest
被映射到控制器/动作。
page controllers
”吗?我的另一个问题是关于小部件(用户控件)和RenderPartial
方法:
webcontrol
或usercontrol
,并且我想在很多页面中呈现这个小部件,那么如果这个逻辑我怎么能避免重复小部件的逻辑是在“page controller
”? 答案 0 :(得分:1)
当一个请求用于获取一个网页时,我们可以调用这些控制器“页面控制器”吗?
你为什么这样?他们被命名为控制者。毕竟,控制器上的操作不一定会为“网页”提供服务,它可能会使用JSON数据,XML,RSS或仅仅是网页的一部分进行响应(如果需要,可以使用“控件”)。
如果一个小部件代表一个经典的asp.net webcontrol或usercontrol,并且我想在很多页面中呈现这个小部件,那么如果这个逻辑位于“页面控制器”中,如何避免重复小部件的逻辑? / p>
ViewModel
,其中包含窗口小部件中所需的ViewModel,例如-
MainViewModel
{
UserWidgetViewModel UserViewModel;
List<Foo> Bar;
// ...
}
UserWidgetViewModel
{
string UserName;
int Reputation;
//...
}
我首先觉得这个不优雅,但我现在已经使用了一段时间了,我相信它很好地封装了必要的数据。
希望有所帮助
答案 1 :(得分:0)
HMM的 我想你需要修改你对控制器的理解。 控制器有几种方法。它不是映射到页面的控制器,而是ActionMethods。
当调用RenderPartial时,它正在输入相应的ActionMethod(并且该方法可以在任何控制器上),它返回在调用View(.aspx或其他.ascx)上调用它的地方呈现的PartialView(.ascx)如果您有多个级别的部分视图)。 没有逻辑重复...或者我可能不明白你的问题?
答案 2 :(得分:0)
您可以尝试widget controller。它利用.NET MVC 2中新的Html.RenderAction方法。是的,它在技术上破坏了纯mvc模式(做得好MS),但出于实际目的,你可能会发现它非常有用。