【发布时间】:2016-09-08 15:37:55
【问题描述】:
我正在尝试创建一个通用路由来处理 slug,但我总是遇到错误
这个想法是,而不是 www.site.com/controller/action 我在网址中得到一个友好的 www.site.com/{slug}
例如www.site.com/Home/Open 将改为 www.site.com/open-your-company
错误
“/”应用程序中的服务器错误找不到资源
在我的 Global.asax 我有
public static void RegisterRoutes(RouteCollection routes)
{
//routes.Clear();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("DefaultSlug", "{slug}", new { controller = "Home", action = "Open", slug = "" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new
{
area = "",
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
slug = ""
}
);
}
在我的cshtml 之一中,我有以下链接(即使已评论,仍然存在相同的错误)。
@Html.ActionLink("Open your company", "DefaultSlug", new { controller = "Home", action = "Open", slug = "open-your-company" })
编辑:家庭控制器
public ActionResult Open() {
return View(new HomeModel());
}
【问题讨论】:
-
显示
DefaultSlugRoute 映射到的动作。 -
动作是Open inside Home
public ActionResult Open() { return View(new HomeModel()); } -
但我想你明白了,我看到 HomeModel 内部有一些参数正在按位置访问 url。现在测试一下
-
您的操作链接正确。由于它的配置方式,它只是没有映射到正确的路线。
标签: c# asp.net-mvc routes slug