编辑
即使更正了路线以匹配下面的操作,404错误仍然存在。如何使MVC路线更加用户友好的网址?
EDIT 2
我想要访问的网址中有一个.
我认为这是造成问题,因为另一篇文章的网址没有一个和正常工作。我如何对此进行网址编码?
我通常与/site/contoller/action/param
类型的URL
为我的博客网站我想,虽然不同的东西完全罚款。
下面是我的博客文章的一个现有链接的例子:
/Article/tweaking-asp.net-identity-to-add-first-and-last-name-as-username
我有索引视图上的文章控制器接受PARAM称为slug
:
public ActionResult Index(string slug)
{
ApplicationDbContext Context = new ApplicationDbContext();
var Article = Context.Articles.FirstOrDefault(x => x.Slug == slug);
// get and list articles and build the ViewModel
return View(Model);
}
我更新了我的RouteConfig.cs
处理日是,但我似乎已经把它弄糟了,因为当我尝试导航到具有此配置的文章时,出现HTTP404错误。
routes.MapRoute(
name: "Articles",
url: "Article/{slug}",
defaults: new { controller = "Article", action = "Index", slug = UrlParameter.Optional }
);
如何正确地路由到这种类型的URL?
你的路线期望'id',然后是'slug'。看起来你打算只通过'slug'。尝试将路由配置中的url更改为:“article/{slug}” – maccettura
您还应该避免使用“catch-all”('*')。如果您需要将斜线作为子弹的一部分捕获,那也是唯一必要的。 –
记住路线是按先进先出顺序进行评估的。确保您的路线在任何可能发生冲突的通用路线之前列出。另外,我认为'/ {id}'部分应该被移除以获得你想要的URL。 –