編輯
即使更正了路線以匹配下面的操作,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。 –