Asp.net 如何在MVC3中为共享布局视图创建控制器
在ASP.NET WebForms中,母版页有一个服务器端文件。母版页中允许执行一些操作,如检查会话中是否有登录用户,以及从数据库中读取一些默认数据Asp.net 如何在MVC3中为共享布局视图创建控制器,asp.net,asp.net-mvc,asp.net-mvc-3,Asp.net,Asp.net Mvc,Asp.net Mvc 3,在ASP.NET WebForms中,母版页有一个服务器端文件。母版页中允许执行一些操作,如检查会话中是否有登录用户,以及从数据库中读取一些默认数据 但是在ASP.NET MVC中,我怎样才能拥有一个用于共享布局的控制器并使用这些操作呢?我通常创建一个基本的控制器类,我的所有控制器都从该类继承,并且在该类中有任何验证逻辑。根据您到底想做什么,这些共享函数有不同的位置。例如,您可能希望使用操作筛选器并将其注册为全局操作筛选器,以检查有关登录用户的信息。或者,为了从数据库中读取数据,您应该创建DAL
但是在ASP.NET MVC中,我怎样才能拥有一个用于共享布局的控制器并使用这些操作呢?我通常创建一个基本的控制器类,我的所有控制器都从该类继承,并且在该类中有任何验证逻辑。根据您到底想做什么,这些共享函数有不同的位置。例如,您可能希望使用操作筛选器并将其注册为全局操作筛选器,以检查有关登录用户的信息。或者,为了从数据库中读取数据,您应该创建DAL(数据访问层)类,并将它们放在单独的文件夹下 如果希望在控制器之间共享一些代码(例如填充DropDownList的代码),还可以创建基本控制器并使其他控制器从中继承,或者创建ControllerExtension类 因此,对于您想要做的事情,没有单一的解决方案 更新: 下面是BaseController类的示例:
public abstract class BaseController : Controller
{
protected virtual void PopulateDropDownValues()
{
// Code for populating DropDownLists that are shared by all Views...
// ViewBag.DropDownSelectList = selectList;
}
}
然后,您的所有控制器或部分控制器都可以继承此基本控制器:
public class HomeController : BaseController
{
}
谢谢你的回复,你能为基地控制器或填写下拉列表做个例子吗?我完全明白了。。。非常感谢:)不客气。但是,请记住,您应该只对控制器中应该包含的代码使用此解决方案。如果答案有用,您可以让他投赞成票;)当我需要动态操作/部分来登录页面或页面小部件时(使用@Html.Action(“\u Breadcrumbs”)等引用它),我通常会创建一个共享控制器,尽管可能有更好的方法。