Tag: 路由

具有句点的ASP.NET MVC路由ID

如果我有以下路线: {controller}/{action}/{id} 我查看以下url: c1/a1/abc. 它不起作用。 仅当句点位于URL的末尾时才会发生这种情况。 有没有办法让ASP.NET MVC识别出作为ID的一部分?

动态修改RouteValueDictionary

作为这个问题的后续,我正在尝试实现自定义路由约束,以便为特定路由动态修改RouteValueDictionary 。 我95%的方式:我可以根据提供的参数模式匹配任何路由,匹配url中指定的操作。 此过程的最后一步是覆盖RouteValueDictionary以将键重命名为控制器操作的适当参数。 这是我的代码的相关片段(整个类几乎是300行,所以我不想添加所有的,但我可以,如果需要): public class CustomRouteConstraint : IRouteConstraint { public bool Match(HttpContextBase httpContext, Route route, string paramName, RouteValueDictionary values, RouteDirection routeDirection) { if (routeDirection.Equals(RouteDirection.UrlGeneration)) { return false; } //this will grab all of the “actual” parameters out of the RVD, excluding action and controller Dictionary unMappedList = values.Where(x => x.Key.Contains(“param”)).OrderBy(xi => xi.Key).ToDictionary( kvp […]

在ASP.NET MVC 5中路由可选参数

我正在创建一个ASP.NET MVC 5应用程序,我遇到了一些路由问题。 我们使用属性Route来映射Web应用程序中的路由。 我有以下行动: [Route(“{type}/{library}/{version}/{file?}/{renew?}”)] public ActionResult Index(EFileType type, string library, string version, string file = null, ECacheType renew = ECacheType.cache) { // code… } 如果我们在url的末尾传递斜杠char / ,我们只能访问此URL,如下所示: type/lib/version/file/cache/ 它工作正常,但没有/没有工作,我得到404未找到错误,像这样 type/lib/version/file/cache 或者这个(没有可选参数): type/lib/version 我想在url的末尾使用或不使用/ char访问。 我的最后两个参数是可选的。 我的RouteConfig.cs是这样的: public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapMvcAttributeRoutes(); } } 我该如何解决? 斜杠/也是可选的?

ASP.NET MVC Route:绕过路径的静态文件处理程序

我一直在谷歌搜索和修补几个小时并没有取得太大进展,所以希望这里有人可以提供帮助。 我正在尝试将所有请求转到某个路径以由第三方组件处理。 编辑我需要所有其他路径的所有请求才能正常运行。 我正在使用带有通配符映射的路由处理程序,如下所示: routes.Add(new Route(“pathiwant/{*EverythingElse}”, new MyRouteHandler())); 所有传统路由都正确地转发到处理程序,后者可以很好地转发到第三方组件。 当我点击静态文件(.html,.txt等)时,它们被StaticFile处理程序而不是我的处理程序拾取,所以我试图像这样关闭StaticFile处理程序(简化): 这会关闭StaticFile处理程序,但MVC仍然不会选择路由。 我宁愿不再创建自己的处理程序并注入ASP请求堆栈,因为看起来应该有一个MVC快乐的方法来做到这一点。 有什么想法吗? 谢谢。

ASP.NET MVC,本地化路由和用户的默认语言

我正在使用ASP.NET MVC本地化路由。 因此,当用户访问英文站点时,它是example.com/en/Controller/Action ,瑞典站点是example.com/sv/Controller/Action 。 如何确保当用户进入网站时他/她直接使用正确的语言? 我知道如何获得我想要的语言,这不是问题。 我过去经常做的是将文化放入RegisterRoutes方法中。 但由于我的页面处于集成模式,因此无法从Application_Start获取请求。 那么我应该如何从一开始就确保路线正确?

如何确定任意URL是否与定义的路由匹配

如何判断字符串是否与特定的命名路由匹配? 我有这样的路线: routes.MapRoute( “FindYourNewRental”, “find-your-new-rental/{market}/{community}.html”, new { controller = “FindYourNewRental”, action = “Community” } ); string url = “http://www.website.com/find-your-new-rental/northerncalifornia/sacramento.html” 如何以编程方式判断’url’字符串是否与该路由匹配? 像这样的东西: // matches url with the named route “FindYourNewRental” if (IsRouteMatch(url, “FindYourNewRental”)) { // do something } public bool IsRouteMatch(string url, string routeName) { // How do I code this function }

当URL中有尾随空格时,WebAPI路由404

使用默认的Web api路由 config.Routes.MapHttpRoute( name: “API Default”, routeTemplate: “api/{controller}/{id}”, defaults: new { id = RouteParameter.Optional } ); 和控制器 public class TestController : ApiController { [HttpGet] public HttpResponseMessage Get(string id) { return Request.CreateResponse(HttpStatusCode.OK, id); } } 请求’api/test/1′ 返回1 如果由于某种原因你向’api/test/1%20’发送请求 路线404的。 现在这个例子看起来很愚蠢,因为浏览器会修剪尾随空格,但是 对于’api/{controller}/{id}/{extrastuff}’这样的路线 ‘1 ‘的空格将转换为’1%20’并且在未找到的路线上请求将为404。

如何在asp.net mvc 3项目中路由.aspx页面?

我在以下路径中有一个.aspx页面: Areas/Management/Views/Ticket/Report.aspx 我想在浏览器中将其路由到以下路径: http://localhost/Reports/Tickets 我怎样才能做到这一点? 我试试这个: routes.MapRoute( “Tickets”, // Route name “Areas/Management/Views/Ticket/Report.aspx”, // Original URL new { controller = “Reports”, action = “Tickets” } // New URL ); 但我得到了404错误。 我做错了什么? Obs:我把它放在Default路线之前。

mvc Html.BeginForm不同的URL架构

我正在为这样的DropDown创建一个表单: @{ Html.BeginForm(“View”, “Stations”, FormMethod.Get); } @Html.DropDownList(“id”, new SelectList(ViewBag.Stations, “Id”, “Name”), new { onchange = “this.form.submit();” }) @{ Html.EndForm(); } 如果我从我的下拉列表中选择一个值,我会被重定向到正确的控制器,但URL不是我想要的: /站/视图?ID = f2cecc62-7c8c-498d-b6b6-60d48a862c1c 我想要的是: /站/查看/ f2cecc62-7c8c-498d-b6b6-60d48a862c1c 那么如何将id = querystring参数替换为我想要的更简单的URL方案呢?

ASP.NET MVC中的路由,显示URL中的用户名

我试图建立一个路线,所以我可以在URL中显示用户名,如下所示: HTTP:// localhost1234 /约翰· 这是我的routeconfig: routes.MapRoute( name: “users”, // Route name url: “{username}”, // URL with parameters defaults: new { controller = “Home”, action = “Index”, username = “” } // Parameter defaults ); routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional } ); 这是我的HomeController: public […]