Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在MVC3中为共享布局视图创建控制器_Asp.net_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net 如何在MVC3中为共享布局视图创建控制器

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 WebForms中,母版页有一个服务器端文件。母版页中允许执行一些操作,如检查会话中是否有登录用户,以及从数据库中读取一些默认数据


但是在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”)等引用它),我通常会创建一个共享控制器,尽管可能有更好的方法。