1

現在、次のようなコードを使用しているカミソリビューがあります。

@if(Model.IsLink)
{
    <a href="...">
}

Some text that needs to appear

@if(Model.IsLink)
{
    </a>
}    

これは機能しますが、コードはクリーンではありません。このパターンを達成するためのより良い/より受け入れられる方法はありますか?

4

3 に答える 3

2

カスタム HtmlHelper メソッドを作成できます。ここでそれを行う方法に関するリファレンスを参照してください: http://www.asp.net/mvc/tutorials/older-versions/views/creating-custom-html-helpers-cs

メソッドは「IsLink」ブール値をパラメーターとして取り、それを使用してアンカーまたはプレーンテキストを出力できます。これがどのように見えるかのサンプルです:

namespace MvcApplication1.Helpers
{
     public static class LabelExtensions
     {
          public static string LinkableText(this HtmlHelper helper, bool isLink, string text, string url = null)
          {
               return isLink ? string.Format("<a href='{0}'>{1}</a>", url, text) : text;

          }
     }
}
于 2013-08-26T19:12:10.327 に答える
1

HTML 5 では、リンクがない場合、このようなマークアップを持つことは有効です

<a>some text</a>

もしそうなら、このようなマークアップ

<a href="http://example.com">some text</a>

また、razor v2 以降では、null 条件付き属性が href を処理するため、コードは次のようになります。

<a href="@link">some text</a>

@linknull の場合、href 属性は省略されます。

于 2016-03-08T03:33:31.873 に答える