2011-07-29 28 views
1

私が取り組んでいるアプリケーションでは、イメージキャプションを複数の行にまたがる必要があります。複数行のリンクを生成するためのHtml.ActionLinkの取得

<a href="http://www.stackoverflow.com">Stack<br>Overflow</a> 

が私のためにこれをレンダリング:私は、このマークアップから所望の効果を得ることができた遊んで私はリンクの記述を生成するための正しい方法を見つけることができなかったしかし

Stack
Overflow

この種の出力をレンダリングするHTML.ActionLinkの場合

答えて

2

URLがあなたのウェブサイトの一部ではない場合、このリンクを生成するためにHTMLヘルパーを使用しても大した価値はありません。代わりに、単にそのまま書いてください。そして、それはあなたのサイトの一部であり、あなたがアドレスに到達するためのルーティングを使用することができれば、あなたがHTMLがデフォルトでリンクテキストをコードしないカスタムHTMLヘルパー書くことができます:

public static class HtmlExtensions 
{ 
    public static MvcHtmlString MyActonLink(
     this HtmlHelper html, 
     string linkText, 
     string action, 
     string controller, 
     object routeValues, 
     object htmlAttributes 
    ) 
    { 
     var urlHelper = new UrlHelper(html.ViewContext.RequestContext); 
     var url = urlHelper.Action(action, controller, routeValues); 
     var anchor = new TagBuilder("a"); 
     anchor.InnerHtml = linkText; 
     anchor.Attributes["href"] = url; 
     anchor.MergeAttributes(new RouteValueDictionary(htmlAttributes)); 
     return MvcHtmlString.Create(anchor.ToString()); 
    } 
} 

とあなたのビューで:

@Html.MyActonLink(
    "Stack<br/>Overflow", // linkText 
    "MyAction",    // actionName 
    "MyController",   // controllerName 
    new { id = "123" },  // routeValues 
    new { @class = "foo" } // htmlAttributes 
) 
+0

これは本当にうまくいきました。ありがとうございました – MikeJ

関連する問題