如何在Asp.net MVC中使用Folder / SubFolder / Controller / Action制作URL?

时间:2014-12-18 18:29:39

标签: asp.net-mvc-4 asp.net-mvc-5

如何在Asp.net MVC中指定DomainName/Admin/Folder/Controller/Action/Parameters之类的URL?它是否需要路由?任何人有任何想法吗?请帮帮我。

3 个答案:

答案 0 :(得分:2)

路由框架不是基于文件系统的。它没有控制器所在文件夹的概念。你可以通过区域获得你想要的部分,它允许你将控制器分组到一个公共目录下,但这不仅仅是一个简单的目录。它有一个实际的类组件,路由框架在创建和解释路由时使用它。例如,您可以添加一个区域,然后获取如下的URL:

/AreaName/ControllerName/ActionName/Parameters

但是你可以接受它。

您唯一的其他选择是使用自定义路由或属性路由到" fake"您想要的网址。换句话说,它仍然与实际的文件系统路径无关,但你可以定义路由应该以你想要的路径的静态组件作为前缀。

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

或者使用属性路由,您可以使用RoutePrefix属性修饰您的控制器:

[RoutePrefix("Folder/SubFolder/Foo")]
public class FooController : Controller

答案 1 :(得分:0)

@Url.Action("Action", "Controller", new { area = "area", class="class", etc })

答案 2 :(得分:0)

我在项目中遇到过相同类型的问题。当菜单或重定向保留为文件夹子文件夹时,为菜单或重定向指定href失败。

更好的选项是在HTML链接中带有Url.action的href。

<a class="nav-link"  href="@Url.Action("ActionmethodName", "Controller Name", new { name = "John", contact = "calgary, vancouver" })">Home</a>

对Ajax调用使用完整路径网址: 为ajax调用的URL参数指定完整的URL。