繁体   English   中英

ASP.NET MVC中以Root身份查看的路由

[英]Route to View in Root in ASP.NET MVC

我有一个ASP.NET MVC 3应用程序。 我有点理解路线,但有时候我会陷入困境。 目前,我有一个类似如下的文件结构:

/Controllers
  Child1Controller.cs
  Child2Controller.cs
  RootController.cs
/Views
  Index.cshtml
  Test.cshtml
  Child1
    Index.cshtml
    Item.cshtml
  Child2
    Index.cshtml
    Item.cshtml

我可以从Child1和Child2中的视图中成功获取html。 在我的浏览器中访问/ Child1 / Index或/ Child2 / Index。 但是,我无法弄清楚如何使用/ Index来查看/ Views目录中的Index.cshtml的内容。 我如何连线?

谢谢!

为了访问视图,它们需要与MVC中的控制器/动作相关联。 对于您的Child1 / Index和Child2 / Index,您的Child1和Child2控制器中的代码类似于以下内容:

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

对于您要询问的观点,您可以执行以下两种操作之一。

1:您可以创建Root文件夹并将这些视图移动到该文件夹​​中。 从ActionMethod返回视图时,MVC将首先在Views文件夹中查找与控制器名称相同的文件夹(“Root”),然后在其中查找与ActionName对应的View。 如果在那里找不到,MVC将查看Views / Shared文件夹。 如果在那里找不到它,则会抛出错误。 因此,在rootcontroller.cs文件中,创建以下操作方法:

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

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

2:如果您真的希望保持文件夹结构的方式,您可以准确指定您希望操作返回的视图的位置(可用于返回与您的操作名称不同的视图)方法)。 在rootcontroller.cs文件中更改这些操作方法,以指定要为该操作返回的视图的位置:

public ActionResult Index(){
        return View("~/Views/Index.cshtml");
    }

public ActionResult Test(){
        return View("~/Views/Test.cshtml);
    }

请注意,这两种方法都假设您已将默认路由修改为使用“Root”作为默认控制器,因为它是“Home”控制器。 现在,使用这两种方法中的任何一种,您都可以使用以下方法:

www.yoursite.com -> Returns Root/Index
www.yoursite.com/Root/Test -> Returns Root/Test
www.yoursite.com/Root/Index -> Returns Root/Index

Just /Index将路由到默认控制器,它是在路由配置中指定的索引操作(通常在Global.asax.cs中)。 但是,此默认控制器的相应操作将返回ViewResult,它将尝试将视图查找到“controller”的文件夹中。 因此,如果您的默认控制器是RootController,则视图必须位于Root/Index 此外,在共享文件夹中搜索视图,但无论如何都不搜索根目录。 如果您想更改此订单,请尝试此链接

暂无
暂无

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

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