1

ASP.NET MVC で、アクションを指定せずに Html.helper を使用して URL を生成する(したがって、既定のアクションにルーティングする) 方法はありますか?

基本的に、{lang}/controller を出力する URL が必要です。つまり: ~/EN/Home

しかし、MVC のすべての html-helper は、特定のコントローラー アクションを指定することを要求しているようです。

<a href="@Url.Action(null, @Resources.Home">Click here</a>

単なる EN/Home の代わりに EN/Home/PartialViewName を出力します.... (部分ビューで生成しています)

更新 1:

どうやら、「インデックス」アクションは生成された URL に表示されません。

@Html.ActionLink("Click here", "Index", @Resources.Home)

出力 /EN/ホーム

ただし、パラメーターを追加する場合、残念ながら問題は同じままです。次のいずれも正しい URL を出力しません (つまり、EN/Home/3)。

@Html.ActionLink("Click here", "Index", @Resources.Home, new { id = home.Id }, null)

<a href="@Url.Action(null, @Resources.Home)/@home.Id">Click here</a>

更新 2:

次のように今のところ解決しました:

@Html.ActionLink("Click here", "Index", string.Format(Resources.Home + "/" + home.Id))

しかし、それはこの問題の唯一の/正しい解決策ではありませんか?

4

2 に答える 2

1

次のように home/{id} のルートを追加してみてはどうでしょうか。

        routes.MapRoute(
            name: "HomeID",
            url: "home/{id}",
            defaults: new { controller = "Home", action = "Index", id = 0 });

次に、URL を作成すると、/home/32 が返されます (ID が 32 で生成された場合)。

于 2013-08-20T10:39:08.820 に答える
0

必要な URL を生成する独自のヘルパーを作成してみてはいかがでしょうか。URL.Action の mvc 実装を単純に呼び出してから、アクション名を必要なものに置き換えることもできます。

于 2013-08-20T10:52:50.680 に答える