C#.NET MVC路由别名

时间:2017-01-26 02:49:51

标签: asp.net-mvc redirect routing alias

我一直在搜索并搜索旧网址,就像我们以前在aspx页面中做的那样,你可以有一个别名指向一个页面,如www.domain.com/my-great-alias指向www。 domain.com/alias.aspx。我想在MVC中做同样的事情,但无法弄清楚如何在路由表中实现这一点。 www.domain.com/my-great-alias将向最终用户显示,但请指向www.domain.com/alias/2

这对我正在寻找的其他人有意义吗?

// router

routes.MapRouteLowercase(
                            "Alias",
                            "{id}",
                            new
                            {
                                controller = "alias",
                                action = "select",
                                id = UrlParameter.Optional
                            }
                        );

//别名控制器

public ActionResult Select()
        {
            return View("select");
        }

//食谱控制器

public ActionResult Select()
    {
        return View();
    }

1 个答案:

答案 0 :(得分:1)

你应该能够利用路由配置和参数(只要它在同一个域中)这样做:

路由

        routes.MapRoute(
            name: "AliasRoute",
            url: "{id}",
            defaults: new { controller = "Alias" }
        );

控制器

public class AliasController : Controller
{
    public ActionResult Index(string id)
    {
        //DO SOME DATABASE STUFF HERE TO LOOKUP THE CORRESPONDIND CONTROLLER AND ACTION
        var controllerAction = lookupControllerActionInDatabase(id);
        return View(controllerAction.ViewName);

        //OR

        //DO CONDITIONAL CHECKS HERE AND RETURN THE APPROPRIATE VIEW
        if (id == "my-great-alias") {
          return View("Alias");
        } else if (id == condition1) {
          return View("viewForCondition1");
        } else if (id == condition2) {
          return View("viewForCondition2");
        }
        //AND SO ON...
    }
}