你有做這樣的事情了,問題是,以下將被明確:
/MySite/SomeID
/MySite/SomeController
你怎麼希望能夠在兩者之間進行區分?如果你不介意的話,第二個是不可能的(即你是幸福總是指定動作時指定控制器),你可以嘗試這樣的事:
routes.MapRoute(
"ShortUrl",
"{id}",
new { controller = "Home", action = "Index", id = Url.OptionalParameter }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = Url.OptionalParameter }
);
請求然後/MySite/SomeID
應該帶你到相同的動作如MySite/Home/Index/SomeID
。
如果您需要能夠指定要麼和ID或控制器(默認動作),你可以不喜歡以下(也使用上述路由):
public class HomeController : Controller
{
public ActionResult Index(string id)
{
// If the ID represents something, show that something.
if (IdMatchesSomeResource(id))
{
// Do something
return View();
}
// Otherwise, treat it as a request for a controller.
else
{
return RedirectToAction("Index", id);
}
}
}