如何在 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。