我一直在搜索并搜索旧网址,就像我们以前在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();
}
答案 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...
}
}