私のURLをスラッグとうまくやさしく見えるようにしようとしています。私はうまくいったが、私のデフォルトルーティングは動作しなくなった。 このexample.com/location/viewlocation/528にアクセスすると、urlはexample.com/528/a-nice-locationのようになります。slugとidを使用したMVC URLルーティング。デフォルトのルーティングで混乱を招く
しかし、今私の通常のものはdosent仕事。エラーでexample.com/home/index結果に タイピング
パラメータ辞書はSystem.Web.Mvc」メソッドのパラメータの非NULL可能タイプ「可能System.Int32」の「ID」にNULLエントリを含みます.ActionResult ViewLocation(Int32、System.String) '' Oplev.Controllers.LocationController 'にあります。オプションのパラメータは、参照型、null可能型、またはオプションのパラメータとして宣言する必要があります。
私はさまざまな解決方法を試しましたが、私は何か不足しています。それを働かせることはできません。
マイコード: RouteConfig
routes.MapRoute(
name: "view_location",
url: "{id}/{slug}",
defaults: new { controller = "Location", action = "ViewLocation", id = UrlParameter.Optional, slug = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
場所コントローラ
public ActionResult ViewLocation(int id, string slug)
{
if (string.IsNullOrEmpty(slug))
{
slug = "a-nice-location"; // testing..
return RedirectToRoute("view_location", new { id = id, slug = slug });
}
return View();
}
ホームコントローラ
public ActionResult Index()
{
return View();
}
に必要な
Route
属性を使用するか、 'int型を使用することができますRouteConfig
で有効になっている?'代わりint' 'のタイプ。メッセージは簡単です。null以外の型を使用している場合は、ルートの数値制約を宣言する必要があります。 –