2387

[code]

    @Html.ActionLink("サンプル", "Sample", "Home")
    
[/code]

これは実行時に、

[code]

    <a href="/Home/Sample">サンプル</a>
    
[/code]

という出力になりますが、タグの内部に単純なテキストではなく、以下のようなhtml要素を含めるにはどうしたらよいでしょうか？

[code]

    <a href="/Home/Sample">
      <h2>サンプル</h2>
      <p>これはサンプルです</p>
    </a>
    
[/code]


CC BY-SA 3.0
2014-12-22T14:27:04.297
2386
2014-12-22T14:54:29.313
3925
question
asp.net razor
@Html.ActionLinkにhtml要素を含めるには？


できないと思ったので、以下の方法などで代替します。

[code]

    <a href='@Url.Action("Sample","Home")'>
      <h2>サンプル</h2>
      <p>これはサンプルです</p>
    </a>
    
[/code]

* * *

仮にどうしても、 `@～`形式でということであれば、以下の様なクラスを自作して使用することもできます。

[code]

    namespace WebApplication1.MyHelper {
        public class MyUrlHelper {
            public static MvcHtmlString MyActionLink(UrlHelper url,  string action, string controller, string text){
    
                var address = url.Action(action, controller);
                const string html = @"<a href=""{0}"">{1}</a>";
                return new MvcHtmlString(string.Format(html, address, text));
    
            }
        }
    }
    
[/code]

表示する例

[code]

    @using WebApplication1.MyHelper
    @{
        ViewBag.Title = "Home Page";
    }
    
    <div class="jumbotron">
    
        <!-- こちらは最初の回答 -->
        <a href='@Url.Action("About","Home")'>
            <h2>Sample</h2>
            <p>here is a sample</p>
        </a>
    
        <!-- 自作のクラスで対応（先頭行で @usingもしています） -->
        @MyUrlHelper.MyActionLink(@Url, "About", "Home", "<h2>Sample</h2><p>here is a sample</p>")
    </div>
    
[/code]


CC BY-SA 3.0
2014-12-22T14:36:28.303
2387
2014-12-22T14:54:29.313
2014-12-22T14:54:29.313
728
728
2386
answer