如何在 MVC 中使用文件夹/子文件夹/控制器/操作 Asp.net 制作 URL



如何在 MVC 中指定像 DomainName/Admin/Folder/Controller/Action/Parameters Asp.net 这样的 URL?需要路由吗?有人有任何想法吗?请帮助我。

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

/AreaName/ControllerName/ActionName/Parameters

但这是你能承受的。

您唯一的其他选择是使用自定义路由或属性路由来"伪造"您想要的 URL。换句话说,它仍然与实际的文件系统路径无关,但您可以定义路由应以所需路径的静态组件为前缀。

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
@Url.Action("Action", "Controller", new { area = "area", class="class", etc })

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

更好的选择是在 html 链接中使用 Url.action 的 href。

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

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

最新更新