首页 > 解决方案 > 如何在 mvc 5 中创建一个控制器和多个视图

问题描述

我将 ASP.NET MVC5 与 Entity Framework 4.5 一起使用,并希望在单个控制器中创建多个视图。假设我有 MasterController,我想要添加编辑和显示方法之类的操作,并且在视图文件夹中,我在此文件夹中有一个文件夹名称“Masters”,我想要类别明智的文件夹和文件夹 cshtml 文件。
我正在为我想要的图像共享结构。
这可能吗?

这是我的视图结构

在此处输入图像描述

这是我的控制器结构

在此处输入图像描述

标签: c#asp.net-mvcentity-frameworkrazor

解决方案


对的,这是可能的。您可以简单地在ASP.NET MVC项目中创建一个新控制器并使用以下操作方法像这样装饰它:

MasterController.cs

    public class MasterController : Controller
    {
        [HttpPost]
        public ActionResult AddCurrency(int? id)
        {
            return View();
        }

        [HttpGet]
        public ActionResult CurrencyDetails()
        {
            return View();
        }

        [HttpDelete]
        public ActionResult DeleteDetail(int? id)
        {
            return View();
        }
    }

然后,转到这些操作方法中的每一个,右键单击添加视图,然后单击确定。默认情况下,与控制器相关的所有视图都Views/<FolderWithControllerName>Views/Master. 在其中手动创建文件夹并相应地拖放视图。

在此处输入图像描述

由于您要覆盖默认约定,因此您需要在从操作方法调用视图时明确提及视图的路径。像这样修改控制器,你就可以开始了:

    public class MasterController : Controller
    {
        [HttpPost]
        public ActionResult AddCurrency(int? id)
        {
            //return View();
            return View("/Views/Master/AddCurrency/AddCurrency.cshtml");
        }

        [HttpGet]
        public ActionResult CurrencyDetails()
        {
            //return View();
            return View("/Views/Master/CurrencyDetails/CurrencyDetails.cshtml");
        }

        [HttpDelete]
        public ActionResult DeleteDetail(int? id)
        {
            //return View();
            return View("/Views/Master/DeleteDetail/DeleteDetail.cshtml");
        }
    }

推荐阅读