我的HomeController中有以下内容:
public ActionResult Share(string id)
{
Debate debate;
try
{
debate = Db.Debates.Single(deb => deb.ShareText.Equals(id));
}
catch (Exception)
{
return RedirectToAction("Index");
}
return View(debate);
}这允许我这样调用url:
http://localhost:50499/Home/Share/SomeTextHere
我在routeconfig文件中这样配置了路由:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Share",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Share", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}我想知道如何以这种方式调用URL:
http://localhost:50499/Debate/SomeTextHere
我一直在努力解决这个问题,但运气不佳。实现这一目标的最佳方法是什么?
发布于 2016-09-26 09:15:07
正如@StephenMuecke在评论中提到的,您需要更改路由以使其不那么通用。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Share",
url: "Debate/{id}",
defaults: new { controller = "Home", action = "Share", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}现在,Share路由将允许http://localhost:50499/Debate/SomeTextHere路由到适当的控制器操作。
https://stackoverflow.com/questions/39693321
复制相似问题