かなり奇妙!
カスタムルートは次のとおりです。
routes.MapRoute(
"Dota2-News-Details", // Route name
"dota2-news/{id}/{slug}", // URL with parameters
new { controller = "Dota2News", action = "Detail", slug = "", id = UrlParameter.Optional } // Parameter defaults
);
作業リンク:
http://localhost:20099/dota2-news/3/Some-random-post
http://localhost:20099/dota2-news/5/Another-random-post
http://localhost:20099/dota2-news/14/New-delicious-items
動作しないリンク:
http://localhost:20099/dota2-news/4/The-Dark-Moon-comes.
http://localhost:20099/dota2-news/11/Bwa-ha-welcome.
気まぐれに、私はデータベースにアクセスし、SEOTextSlugを変更して.
、値から最後の記号を削除しました。予想どおり、正常に動作するようになりました。私は混乱していますが、URLは.
記号で終わる可能性があると思いました。
これが私のコントローラーです:
public ActionResult Detail(int id, string slug)
{
var viewModel = new OfficialNewsModel();
var news = _officialNewsRepository.FindById(id);
if (news.SEOTextSlug != slug)
{
return RedirectToAction("Detail", "Dota2News", new { id = news.OfficialNewsId, slug = news.SEOTextSlug });
}
viewModel = Mapper.Map<OfficialNew, OfficialNewsModel>(news);
return View(viewModel);
}
私の質問:
.
末尾の記号がアプリを壊すのはなぜですか?URLのどこにもdoy記号を含めることはできませんか?
'/'アプリケーションのサーバーエラー。リソースが見つかりません。説明:HTTP404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に使用できなくなった可能性があります。次のURLを確認し、スペルが正しいことを確認してください。
要求されたURL:/ dota2-news / 1/In-defense-of-the-Temple。
バージョン情報:Microsoft .NET Frameworkバージョン:4.0.30319; ASP.NETバージョン:4.0.30319.225