我有这样的默认路线

routes.MapRoute(
            name: "Default",
            url: "{country}/{lang}/{controller}/{action}",
            defaults: new { controller = "Home", action = "Index" }
        );

但是,当我的网站启动时,它正在搜索/ Home路由,但它不存在,我需要在启动时传递该国家/地区和lang参数,但我不知道在哪里? 并使用类似ES / es / Home的方式获取默认路由。

提前致谢。

===============>>#1 票数:1 已采纳

如果您要查找国家和语言的默认值,只需更改默认选项,

defaults: new { country="ES", lang="es", controller = "Home", action = "Index" }

它将使用默认值填充country和lang选项。

或者,如果您的要求是将应用程序的起始网址设置为

www.site.com/ES/es

将以下代码放入Application_BeginRequest中

protected void Application_BeginRequest(object sender, EventArgs e)
{
    if (String.Compare(Request.Path, Request.ApplicationPath, StringComparison.InvariantCultureIgnoreCase) == 0)
            Response.Redirect(Request.Path + "ES/en");
}

编辑

Application_BeginRequest中的代码将针对每个请求执行,包括资源(js / css)网址。 您可以删除Application_BeginRequest代码,并将代码放在默认控制器的默认操作的顶部,以达到相同的效果。 喜欢:

//Home Controller
public ActionResult Index(string country, string lang)
{
    if (String.Compare(Request.Path, Request.ApplicationPath, StringComparison.InvariantCultureIgnoreCase) == 0)
        return Redirect(Request.Path + string.Format("{0}/{1}", country, lang));
    return View();
}

编辑

编码,

if (String.Compare(Request.Path, Request.ApplicationPath, StringComparison.InvariantCultureIgnoreCase) == 0)
        return Redirect(Request.Path + string.Format("{0}/{1}", country, lang));

检查传入的URL是否是应用程序的根URL,是否使用其他路由信息进行重定向。 理想情况下, Request.PathRequest.ApplicationPath具有值/用于起始URL。 在这里,此检查仅在起始/默认网址中完成,因此我认为此代码不会导致网站明显变慢。 您可能会注释掉该代码,并检查性能是否提高,以确保该代码是否是造成性能的原因。

  ask by Steve translate from so

未解决问题?本站智能推荐:

1回复

MVC4默认路由

我有以下两条路线,当用户登陆主页时,它会抛出404.是否有一些令人目眩的明显我错过了? 我希望他们去家庭控制器...... 提前致谢!
2回复

MVC 4中的自定义路由

我有点犹豫要在这里提出这个广泛的问题,但我只是找不到用于研究此问题的关键字。 我很难找到一种方法来在ASP.Net MVC 4(或5)中创建自定义路由,以重新创建在网上各处看到的内容。 我需要的是,如果用户访问http://www.myApp.com/user1则路由将采用该路径并将
1回复

从MVC 5主页默认路由中删除主页索引

我试图阻止用户访问abc.com/Home/Index ,但是我希望用户只能通过abc.com访问主页。 我使用以下代码,但不起作用。 // This code restict user to access abc.com/home/index // Only allow us
1回复

使用MVC直接路由到自定义搜索

我需要使用MVC创建自定义路由以构建自定义搜索: 默认房屋指数的动作: 我想读取这样的字符串: 对于如下网址: 问题是我有两条路线,但不起作用: 这样,Home以外的任何其他控制器都将重定向到Home,并且如果我切换顺序,它将找不到Index Home Ac
1回复

将路由绑定到MVC4中的自定义物理路径

我想根据自定义参数“主题”设置打开视图的路线,如下所示: 主题名称是动态的,我注册了这样的路线: 但这不起作用。 如何将自定义路由“ {theme} / {controller} / {action} / {id}”绑定到自定义物理路径,例如“〜/ themes / {them
1回复

如何在MVC 4中定义自定义路由时跳过其他动作名称

我希望我的访问者能够通过输入商家名称来重定向到商家的详细信息页面。 所以我有这个自定义路线: 我将其默认设置为: 自定义订单后订购。 最后,我有一个名为show的操作,该操作通过访问者输入的名称来获取业务。 现在,当我在主页中拥有的每个Index Action方法都像这样时
2回复

MVC路由未使用默认操作

在我的Web API中,我创建了以下控制器: 另外,这是我的路线配置。 我将我的通讯组路由的默认操作指定为“索引”: 在我看来,我正在使用此脚本来(尝试)击中我的控制器: 但是我的Ajax调用收到404 Not Found错误。 但是,如果我从ajax调用中将inde
1回复

在Route属性ASP.NET MVC的URL中添加自定义单词

如何在某些MVC调用的URL中添加自定义,用户定义的单词? 例如,我在控制器的方法上具有此属性: 我正在尝试将路由更改为以下形式: /accounts/{accountNumber}/transactions 其中accountNumber是可更改的,并在发送请求时由客户端发
1回复

T4MVC的ASP.NET路由未达到默认值

以前没有发生过这种情况,但是突然之间我再也没有遇到默认路由了。 我的主页转到http://localhost:2222/assets/images/30?Controller=home&Action=index 。 为什么会这样呢? 我注意到在家用控制器上执行操作时,它可以正常
1回复

设置非默认ASP.net MVC路由后的404

我将ASP.net MVC4与VWD Express 2010一起使用。我已经设置了一条额外的路线,以从URL中删除多余的/Home/ ,如此处和此处所示 。 我确保按照正确的顺序排列它们: 就删除/Home/而言,这是可行的,但是现在尝试访问非默认控制器时得到404: 我已将