@Url.Action
Razorビューでリンクを作成して次のようなリンクを作成する方法を尋ねています
Controller/Action/123
私はすでに作成しまし@Url.Action("Action","Controller", new { @ViewBag.ID })
たが、次のようなリンクになります
Controller/Action?ID=123
かみそりビューでクエリ文字列なしで URL を作成するにはどうすればよいですか?
@Url.Action
Razorビューでリンクを作成して次のようなリンクを作成する方法を尋ねています
Controller/Action/123
私はすでに作成しまし@Url.Action("Action","Controller", new { @ViewBag.ID })
たが、次のようなリンクになります
Controller/Action?ID=123
かみそりビューでクエリ文字列なしで URL を作成するにはどうすればよいですか?
試す:
@Url.Action("actionname", "controllername", new { id = ViewBag.Id})
問題は、ルート パラメーター コレクションの値が「id」であることを指定していないことだと思います。もちろん、RegisterRoutes でデフォルトのルート構成を使用していると仮定しています。
ヒント: を使用して、自分でタグHtml.ActionLink()
を作成する手間を省くこともできます。<a>
@Html.ActionLink("linkText", "actionName", "controllerName", new { id = ViewBag.ID }, null);
これにより、Jeff's answer で確認できるのと同じ URL を持つ<a>
タグが生成されます。linkText
Url.Action()
注: 最後のパラメーターとして追加することを忘れないでください。そうしないnull
と、間違ったオーバーロードが使用され、匿名型が として使用されhtmlAttributes
ます。
使用するUrl.RouteUrl(String, Object)
かしないかUrl.Action()
デフォルトのルート名を使用してDefault
ください。コードは次のようにする必要があります。
@Url.RouteUrl("Default", new {controller = "SomeControler", action = "SomeAction" , id = @ViewBag.ID })
これを行うと、次のような URL が得られます: SomeController/SomeAction/5
(ID が 5 であると仮定)
これは、デフォルトでプロジェクト mvc テンプレートにDefault
次のようなルートが含まれているために発生します。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
必要に応じて、またはより多くのパラメーターが必要な場合は、ルーティング テーブルにルートを追加することで、より凝った URL を作成できます。
ここに説明があります:http://msdn.microsoft.com/en-us/library/dd505215(v=vs.108).aspx