インデックスページで、次のURLを使用してURLを生成しています
@foreach(var c in ViewBag.cities)
{
<li>@Html.ActionLink((string)c.CityName,"somepage",new{city=c.CityName, id=c.Id})</li>
}
次の形式ですべての都市のURLを生成しました
localhost:55055/1/city1
localhost:55055/2/city2
...
ここで、1,2はIdで、city1、city2はCityNameです。
ルートを次のように構成しました
routes.MapRoute(
name: "CityRoute",
url: "{id}/{city}",
defaults: new { controller = "Home", action = "somepage", id = UrlParameter.Optional, city = UrlParameter.Optional }
);
ホームコントローラーのsomepage
アクションメソッド:
public string somepage(int id, string city)
{
return city + " " + id;
}
私もこれを試しました
public string somepage()
{
return "Hello";
}
しかし、それは結果としてResource cannot be found
ヒットしないブレークポイントを入れてみましsompage
た。
任意の提案
アップデート
以下のコメントで@KDが指摘しているように、私はルートの順序を変更し、上記のルールをすべてのルールの上に配置しました。方法も変更しました
public ActionResult somepage(int id=0, string city="")
{
return Content(city + " " + id);
}
これで動作が変更され、デフォルトのルールが変更されました
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
通常のインデックスページには使用されません。somepage
代わりに、メソッドのブレークポイントがヒットhttp://localhost:55055/2/cityname
し、ブラウザに入れると、ページにidとcitynameが表示されるため、この使用法が使用されます。しかし現在、デフォルトルートはアプリケーションホームに使用されていませんhttp://localhost:55055/