2016-03-24 4 views
0

私は表示するモデルをバインドしています。Html.Label HTMLをレンダリングしないでください

ここ
public class Validation 
{ 
    [Display("Please enter in <h5>day(s)</h5>")] 
    public string Message { get; set; } 
} 

MessageプロパティがPlease enter in <h5>day(s)</h5>として設定されます。

ビューでは、モデルのプロパティをLabelForにバインドしています。

@Html.LabelFor(m => m.Message) 

Please enter in day(s) 

として出力を期待しかし、実際の出力は

Please enter in <h5>day(s)</h5> 

私はラベル全体にCSSを適用することではなく、大きさや化粧品に変化するように文字列の一部をしたいです私が探しているもの。

+0

@CodeCaster、今すぐご確認ください。私は 'DataAnnotations'を逃した –

答えて

1

表示文字列"<h5>some text</h5>"は、HTMLではなくテキストとして表示されます。 MVCは<>文字を&lt;&gt;にエンコードし、そのまま表示させます。

とにかくこのようにしたくないです。

適切な方法は、あなたがしたいテキストを含むように表示文字列を適用するために、次のようになります。そして、CSSクラスを作成

[Display("some text")] 

を:

label.fancyLabel { 
    /* your style here that makes a label look like a h5 */ 
} 

その後から(ラベルにそのクラスを適用します.NET MVC - How to assign a class to Html.LabelFor?):あなたの編集については

@Html.LabelFor(m => m.Message, new { @class= "fancyLabel" }) 

、あなただけのトンをレンダリングしたい場合彼はDisplay属性のテキストをリテラルHTMLとして表示すると、次のようになります。

  • 独自のHTMLヘルパーを導入します。
  • そこにラベルを書きます(for=属性を設定してください)。
  • DisplayAttributeの値を読み取ります。
  • @Html.Raw()ラベルテキストとしてのその値。
  • @Html.YourLabelHelper(m => m.Message)を使用してレンダリングします。

あなたのモデルでHTMLを使用することは、それほどお勧めできません。ビューとテンプレートは、モデルのレンダリング方法を決定する必要があります。

+0

私はこれを知っています。しかし、私は実際のHTMLとしてレンダリングする必要があります。それは可能ですか? –

+0

私の更新を確認してください –

関連する問題