10

ハッシュ/ポンド/フラグメントを含む強く型付けされたT4MVCActionLinkを作成する方法はありますか?

たとえば、作成したいリンクは次のとおりです。

<a href="/Home/Index#food">Feed me</a>

ただし、これを実行できるT4MVCオブジェクトの拡張機能はありません。

<%= Html.ActionLink("Feed me", T4MVC.Home.Index()) %>

したがって、私がしなければならないのは、アクションを作成し、それをそのように埋め込むことです。

<a href="<%= Url.Action(T4MVC.Home.Index()) %>"#food>Feed me</a>

これはあまり望ましくありません。誰かアイデア/提案がありますか?

前もって感謝します

4

4 に答える 4

9

ASP.NET MVC 2.0では、フラグメントを指定できる新しいヘルパーが追加されました。例:

<%= Html.ActionLink("Feed me", "Action", "Controller", null, null, "food", null, null) %>
于 2010-05-27T14:35:35.383 に答える
8

この種のアプローチは、アンカーを手動で作成するよりも(私にとって)少し良いと思う唯一のアプローチです。

${Html.ActionLink("Feed me", T4MVC.Home.Index(), Fragment: "food")}

spark viewengineとは別に、古き良きhtmlhelper拡張メソッドと名前付きパラメーターが1つ必要です。


これはデフォルトのビューエンジンでは利用できないと思いますか?ActionLinkの簡単な拡張機能を作成することにしましたが、それはエレガントではなく、T4MVCの将来のバージョンで他のユーザーが利用できるソリューションがあればよかったと思います。

Sparkは<%=%>を${}に置き換えます。私がそれを好むという理由だけで言及しました(コードの優雅さを強調する場合は試してみてください)。名前付きパラメーターを使用するには、C#4.0が必要です。

これは、「food」引数がどのパラメーターにマップされているかについての情報が失われないようにするためです。


そして、ええ、私はマティアス・ヤコブソンに強く同意します。

于 2010-05-27T14:55:14.230 に答える
2

更新:この過負荷はT4MVC2.6.56に含まれています

はい、完全を期すために、おそらくこれをT4MVCに追加する必要があります。プロトコル/ホスト名も追加し始めると、多くの過負荷が発生することを除いて、簡単に実行できるはずです。

Fx 3.5のサポートを停止すると、デフォルト/名前付きパラメーターに依存できるため、作業が簡単になります。これは、過負荷の地獄を減らすのに大いに役立ちます。しかし、まだ誰もが4.0を使用しているわけではないので、私はこれまでそのステップを避けてきました。

たぶん、現在のバージョンを最後のFx 3.5 / MVC 1.x互換としてフリーズし、新しいビルドでのみFx 4.0 / MVC 2をサポートする必要があります(古いバージョンを無期限に維持します)。とにかく、私は逸脱しています:)

于 2010-05-29T11:07:14.970 に答える
1

David Ebboは、StackOverflowで行った同様の質問に基づいて、この機能をT4MVCに追加しました。

于 2012-05-09T12:15:31.563 に答える