Asp.Net MVC Route不显示“Index”值

时间:2016-12-22 14:03:08

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5

当我使用

从控制器重定向时
RedirectToAction("Index", "Controller");

或使用UrlHelper生成链接

@Url.Action("Index","Controller");

在两种方式中,“/ Index”部分都是从我的URL条带化下来的。 虽然对于SEO目的,我希望我的网址始终以相同的方式显示。

www.domain.com/en/Controller/Index

但现在我

www.domain.com/en/Controller

如何强制执行上述两种方法始终显示“/ Index”部分。

P.S我知道这是因为“索引”在我的路线上被指示为默认动作,但无论哪种方式我希望它显示。

3 个答案:

答案 0 :(得分:1)

使用Index action

在具有默认路由之前的RouteConfig中添加新角色
routes.MapRoute(
            name: "DefaultIndex",
            url: "{controller}/Index/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

答案 1 :(得分:0)

检查global.asax文件中的配置。它可以是这样的。

 public static void RegisterRoutes(RouteCollection routes)
 {
            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Controller", action = "Index", id = UrlParameter.Optional });
  }

也许根据你的面具你总是要去默认路线。所以只需删除默认映射。

答案 2 :(得分:0)

您可以尝试这样做:

 public class HomeController : Controller
 {
    public ActionResult Index()
    {
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

        return RedirectToAction("About","Home");
    }

    public ActionResult About()
    {
        ViewBag.Message = "Your app description page.";

        return View();
    }

    public ActionResult Contact()
    {
        ViewBag.Message = "Your contact page.";

        return View();
    }
}