MVC 路由配置
MVC Route Configuration
我的 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
我一直在努力解决这个问题,但运气不佳。实现它的最佳方法是什么?
如@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
路由到适当的控制器操作。
我的 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
我一直在努力解决这个问题,但运气不佳。实现它的最佳方法是什么?
如@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
路由到适当的控制器操作。