asp.net-mvc-2 - ASP.NET MVC 路由默认值

标签 asp.net-mvc-2 asp.net-routing

我在 global.asax 中定义了两条路由,如下所示

context.MapRoute("HomeRedirect", "",
                            new
                            {
                                controller = "Home",
                                action = "redirect"
                            });

context.MapRoute("UrlResolver", "{culture}/some",
                            new
                            {
                                culture = "en-gb",
                                controller = "someController",
                                action = "someAction"
                            },
                            new
                            {
                                culture = new CultureRouteConstraint()
                            });

根据上面的定义,当用户请求 mysite.com/时,应该调用 HomeController 的重定向 Action ,并且在那个:

public class HomeController : Controller
{
    public ActionResult Redirect()
    {
        return RedirectToRoute("UrlResolver");
    }
}

我想将用户重定向到上面第二个定义的路由,所以我也为它指定了默认值,并为每个指定了一些约束。但是当 RedirectToRoute("UrlResolver") 转向时,没有默认值传递给第二个路由上的 routeConstraints 并且 路由表中没有路由匹配提供的值 显示。

更新

我的 CultureRouteConstraint:

public class CultureRouteConstraint : IRouteConstraint
{
    bool IRouteConstraint.Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        try
        {
            var parameter = values[parameterName] as string;
            return (someCondition(parameter));
        }
        catch
        {
            return false;
        }
    }
}

现在值参数没有文化键/值,但路由参数有。

最佳答案

为您的第二条规则指定的实际路线是“{culture}/some”,因此您的重定向必须是,例如,“/EN-us/some”而不是规则的名称。

关于asp.net-mvc-2 - ASP.NET MVC 路由默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2995068/

相关文章:

.net - 使用 MVC 使用列表作为查询字符串参数

asp.net-mvc-2 - 从头开始使用 ASP.NET MVC 2 和 Ninject 2

asp.net-mvc - 如何设置 MVC 可移植区域以使用复杂目录结构中的资源?

asp.net-mvc - 为什么 ASP.NET 路由优先于 web.config Http Handlers 部分?

asp.net-core-1.0 - 我可以为带有参数的 Controller 添加路由吗?

asp.net-mvc - RenderPartial 无法转换为字符串

ASP.NET MVC 和 AutoMapper(从父域对象和子域对象填充 View 模型)

ASP.NET 路由 - 如果路径存在,GetRouteData 不起作用

c# - Url.Action 从哪里获取这些值?

c# - ASP.NET MVC : Html. Actionlink() 生成空链接