一つの解決策は、あなたがして、ヘルパーメソッドに渡すことができ、この情報のすべてが含まれているラッパークラスを作成することです:
public class RouteWrapper
{
public string RouteName { get; set; }
public object RouteValues { get; set; }
public string LinkText { get; set; }
/* Other Properties pertaining to your data */
}
ラッパーの中で、あなたはRouteNameを定義する方法を持っているでしょう、 RouteValuesプロパティを使用します。また、コントローラーとアクションを変更する必要がある場合は、そのように設定することもできます。ただし、RouteValuesでコントローラーとアクションを渡して、RouteNameとして「Default」を指定することもできます。
あなたはその後、本当にあなたはビューでstraigtを必要とするものを行うことができるだろう(RouteWrapperクラスを想定したモデルで、構文が多少ずれることがありますが、あなたのアイデアを得るでしょう):
<%= Html.RouteLink(Model.LinkText, Model.RouteName, Model.RouteValues) %>
・ホープこれは役に立ちます。
EDIT:
ちょうど再読み込み、あなたはヘルパーを使用していません見ました。
アンカータグを生成する場所に関係なく、内部HTMLのLinkTextプロパティを使用できます。また、ルート名とルート値に基づいてURLを生成するのに役立つRoutingクラスのメソッドがあります。どうすればいいか分かり次第、コードを少し投稿します。
AGAIN EDIT:
OK、これはアンカータグを生成するための一般的な方法のようになります。
public string GenerateAnchorTag(ViewContext context, RouteWrapper model)
{
string url = RouteTable.Routes.GetVirtualPath(context, model.RouteName, new RouteValueDictionary(model.RouteValues));
return String.Format("<a href=\"{0}\">{1}</a>", url, model.LinkText);
}
私は(あなたがSystem.Web.Routingを含める必要が試してみて、多分なるかですSystem.Web.Mvc)。 コンテキストについては、何らかの理由で要求コンテキストを取得する必要があります。私は通常ヘルパー拡張でこれをやっているので、ヘルパー変数にはすでに渡すことができるコンテキストがあります。ヘルパーを使用していない場合は、メソッドにRequestContextを渡す最善の方法を見つけなければなりません。
ビューのコード(ここでは「動的に生成される」)をここに投稿できますか? –
私はまだフォームを生成する動的部分をコード化していません。 – PositiveGuy
それは私の頭を打つ私のカスタムコントロールからのHTMLヘルパーの使用せずにTagBuilderを使用していますが、今私はどのようにコントローラ/動作を指している動的にハイパーリンクを構築しようとしている動的にレンダリングできないHtml.ActionLinkを使用するのではなく、というストレートを使用してハイパーリンクに対して動的に生成されるHTMLマークアップです。このハイパーリンクをカスタムコントロールからビューに動的にレンダリングする理由はありません。 – PositiveGuy