発生のリンクを含む断片とASP.Net MVC Routelink
-
21-09-2019 - |
質問
私の活動に活用しようとしています。RouteLink内へのリンクを生成する命名したアンカーを他のページです。い定義RouteLinkを含むフラグメントオプションが私はそうとしていることがあれば別です。
public static string RouteLink(
this HtmlHelper htmlHelper,
string linkText,
string routeName,
string protocol,
string hostName,
string fragment,
Object routeValues,
Object htmlAttributes
)
は明らかで、そのような無骨律.簡単言うまでもなく予測できるように
Html.RouteLink("Looga", new { Controller = "Cooga", Action = "Aooga", Fragment = "Fooga" })
そして、その返
<a href="/Cooga/Aooga#Fooga">Looga</a>
そんなことが可能なのでしょうかは私を指定する必要がありゆっURLの一部を断片を用のヘルパー.私もいうテーマの手のように
<a href="<%= Url.RouteUrl(new { Controller = "Cooga", Action = "Aooga" }) %>#Fooga>Looga</a>
そのようなものRouteLinkはできるということはより優雅.
解決
主要ポストのアカウントの編集の
を取るための編集 <デル>
Html.RouteLink(
"Looga"、
新しい{コントローラ= "Cooga"、ACTION = "Aooga"}、
新しい{フラグメント= "Fooga"})デル>
このコードは、現在の農産物
意志<a href="/Cooga/Aooga" Fragment="Fooga">Looga</a>
そうでもないあなたが何をしたいです。代わりに、あなたはRouteLink、このような何かのために独自の拡張メソッドを書くことができ...
public static class RouteLinkExtensions
{
public static string RouteLink(
this HtmlHelper htmlHelper,
string linkText,
object routeValues,
string fragment)
{
// There's probably better ways to do the implementation, but you get the idea
var url = new UrlHelper(htmlHelper.ViewContext.RequestContext);
return string.Format("<a href=\"{0}#{1}>{2}</a>",
url.RouteUrl(routeValues),
fragment,
linkText);
}
}
これは、あなたのページにRouteLinkへのクリーンコールを使用できるようになります: - )
Html.RouteLink(
"Looga",
new { Controller = "Cooga", Action = "Aooga" },
"Fooga")
他のヒント
+1ラッセル。
こちらは若干編集版の延長するか変更に合わせて目的...うと思ったことにも合い入れてもらった。
変更した:
で現を返しますとHtmlの文字列ではなく文字列で利用できるレンダリングリンクの直行っていただきます。
っ受け入れルートの名前ではなくroutevaluesオブジェクト
私もその断片を渡すには空なので追加、'#'
public static class HtmlHelperRouteLinkExtension
{
public static IHtmlString RouteLink(
this HtmlHelper htmlHelper,
string linkText,
string routeName,
string fragment)
{
var url = new UrlHelper(htmlHelper.ViewContext.RequestContext);
return htmlHelper.Raw(string.Format("<a href=\"{0}{1}\">{2}</a>",
url.RouteUrl(routeName),
String.IsNullOrWhiteSpace(fragment) ? "" : "#" + fragment,
linkText));
}
}