0

在 ASP.NET WebForms 中,我们有一个用于 MasterPage 的服务器端文件。MasterPage 中允许进行一些操作,例如检查登录用户的会话以及从数据库中读取一些默认数据。

但是在 ASP.NET MVC 中,我如何拥有一个用于共享布局的控制器并使用这些操作?

4

2 回答 2

2

根据您想要做什么,这些共享功能有不同的位置。例如,您可能希望使用操作过滤器并将其注册为全局操作过滤器,以检查有关登录用户的信息。或者,为了从数据库中读取数据,您应该创建 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
{
}
于 2013-08-14T17:47:29.657 回答
0

我通常会创建一个基本 Controller 类,我的所有控制器都从该类继承,并在其中包含任何验证逻辑。

于 2013-08-14T17:27:36.063 回答