在 ASP.NET WebForms 中,我们有一个用于 MasterPage 的服务器端文件。MasterPage 中允许进行一些操作,例如检查登录用户的会话以及从数据库中读取一些默认数据。
但是在 ASP.NET MVC 中,我如何拥有一个用于共享布局的控制器并使用这些操作?
在 ASP.NET WebForms 中,我们有一个用于 MasterPage 的服务器端文件。MasterPage 中允许进行一些操作,例如检查登录用户的会话以及从数据库中读取一些默认数据。
但是在 ASP.NET MVC 中,我如何拥有一个用于共享布局的控制器并使用这些操作?
根据您想要做什么,这些共享功能有不同的位置。例如,您可能希望使用操作过滤器并将其注册为全局操作过滤器,以检查有关登录用户的信息。或者,为了从数据库中读取数据,您应该创建 DAL(数据访问层)类,并将它们放在单独的文件夹下。
您还可以创建一个基本控制器并让其他控制器从它继承,或者您可以创建一个 ControllerExtention 类,如果您想在您的控制器之间共享一些代码(一个示例是填充 DropDownLists 的代码)。
因此,对于您想要做的事情没有单一的解决方案。
更新:
下面是 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
{
}
我通常会创建一个基本 Controller 类,我的所有控制器都从该类继承,并在其中包含任何验证逻辑。