0

@Url.ActionRazorビューでリンクを作成して次のようなリンクを作成する方法を尋ねています

Controller/Action/123

私はすでに作成しまし@Url.Action("Action","Controller", new { @ViewBag.ID })たが、次のようなリンクになります

Controller/Action?ID=123

かみそりビューでクエリ文字列なしで URL を作成するにはどうすればよいですか?

4

4 に答える 4

7

試す:

@Url.Action("actionname", "controllername", new { id = ViewBag.Id})

問題は、ルート パラメーター コレクションの値が「id」であることを指定していないことだと思います。もちろん、RegisterRoutes でデフォルトのルート構成を使用していると仮定しています。

于 2013-09-27T14:45:56.090 に答える
1

ヒント: を使用して、自分でタグHtml.ActionLink()を作成する手間を省くこともできます。<a>

@Html.ActionLink("linkText", "actionName", "controllerName", new { id = ViewBag.ID }, null);

これにより、Jeff's answer で確認できるのと同じ URL を持つ<a>タグが生成されます。linkTextUrl.Action()

注: 最後のパラメーターとして追加することを忘れないでください。そうしないnullと、間違ったオーバーロードが使用され、匿名型が として使用されhtmlAttributesます。

于 2013-09-27T14:59:19.303 に答える
0

使用する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

于 2013-09-27T14:41:38.180 に答える