如何在MVC3中为共享布局视图创建Controller

时间:2013-08-14 17:24:30

标签: asp.net asp.net-mvc asp.net-mvc-3

在ASP.NET WebForms中,我们有MasterPage的服务器端文件。在MasterPage中允许执行诸如检查登录用户的会话和从数据库读取某些默认数据等操作。

但是在ASP.NET MVC中,我如何为共享布局设置Controller并使用这些操作?

2 个答案:

答案 0 :(得分:2)

根据您想要做什么,这些共享功能有不同的位置。例如,您可能希望使用操作筛选器并将其注册为全局操作筛选器,以检查有关已登录用户的信息。或者,要从数据库中读取数据,您应该创建DAL(数据访问层)类,并将它们放在单独的文件夹中。

您还可以创建一个基本控制器并让其他控制器继承它,或者您可以创建一个ControllerExtention类,如果您想在控制器之间共享一些代码(例如填充DropDownLists的代码)。 / p>

因此,对于您想要做的事情,没有单一的解决方案。

<强>更新

以下是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
{
}

答案 1 :(得分:0)

我通常创建一个基本的Controller类,我的所有控制器都继承自那里,并且在那里有任何验证逻辑。