繁体   English   中英

ASP.Net视图文件夹,其中包含一个文件夹-如何创建控制器

[英]ASP.Net view folder with a folder inside - How to create the controller

我想创建一个类似于以下地址的URL:localhost:port / farm / animals / cow.cshtml。 如何为/ animals /后面的页面创建控制器?

如果我创建一个标准:

public class FarmController : Controller
{
    //
    // GET: /Farm/

    public ActionResult Cow()
    {
        return View();
    }
}

我不会到达那里,因为cow.cshtml位于动物后面。 我也不会使用以下代码进入cow.cshtml:

public class AnimalsController : Controller
{
    //
    // GET: /Animals/

    public ActionResult Cow()
    {
        return View();
    }
}

因为到cow.cshtml的链接不是/ animals /,而是/ farm / animals / cow。

我该如何解决这个问题?

您需要注册以下路线-

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Animals",
            url: "farm/animals/{action}",
            defaults: new { controller = "Farm" }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

调节器

public class FarmController : Controller
{
    // GET: Farm
    public ActionResult Index()
    {
        return View();
    }

    // GET: Farm/Animals
    public ActionResult Animals()
    {
        return View();
    }

    // GET: Farm/Animals/Cow
    public ActionResult Cow()
    {
        return View();
    }
}

在此处输入图片说明

虽然路由可以解决您的问题,但这听起来像是MVC领域的工作。 如果您想在实际的应用程序中将站点的各个部分分开,那么这里可能是一个区域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM