次のコードを使用して、ビュー モデルのテキストをビューに表示しています。
@Html.DisplayFor(m => m.Name)
IE9 で HTML の詳細 (仕事で使用する必要があります) を見ると、名前に関連付けられたクラスはなく、表示フィールド クラスのスタイリングではなく Body CSS スタイリングを使用しているだけです。この問題の原因や、作成したテキストの CSS を編集する方法を知っている人はいますか?
次のコードを使用して、ビュー モデルのテキストをビューに表示しています。
@Html.DisplayFor(m => m.Name)
IE9 で HTML の詳細 (仕事で使用する必要があります) を見ると、名前に関連付けられたクラスはなく、表示フィールド クラスのスタイリングではなく Body CSS スタイリングを使用しているだけです。この問題の原因や、作成したテキストの CSS を編集する方法を知っている人はいますか?
ラベルの場合は、Nataka526 が提案するように適切なヘルパーを使用してください
それ以外の場合は、クラスのスパンに配置し、そのクラスの css を更新します。
あなたのhtml:
<span class="name">
@Html.DisplayFor(m => m.Name)
</span>
あなたのCSS:
.name {
//custom css
}
アップデート
別のオプション: 表示テンプレートを更新して、特定の ViewData キーを処理します。
Views > Shared > DisplayTemplate (まだ持っていない場合は、このフォルダーを作成します):
ファイル String.cshtml を追加します。
@model string
@{
string myClass = ViewData["class"]
}
@if(string.IsNullOrEmpty(myClass))
{
@:@Model
}
else
{
<span class="@myClass">@Model</span>
}
文字列以外にも、他のタイプの DisplayTemplates を追加する必要がある場合があります。
ビューでは、次のように記述します。
@Html.DisplayFor(m => m.Name, new { @class= "name" })
これにより、その周りにスパンが自動的に追加されます。
アップデート
説明:
Html.DisplayFor
expression と の 2 つのパラメーターを受け入れるオーバーロードがありますobject additionalViewData
。したがって、渡す 2 番目のパラメーターは、匿名オブジェクトの additionalViewData です。というプロパティでこのオブジェクトを作成しますclass
次に、html ヘルパー内で、キーclass
を持つ ViewData があるかどうかを確認し、ある場合は、そのクラス値を持つスパン内に出力を配置します。
** "class" は適切な変数名ではないため、変数名を からclass
に更新しました。myClass
DisplayFor は、テンプレート化のために使用されます。テンプレートを使用していない場合は、次のようにアイテムを使用する@Model.Name
必要があります。クラスまたは ID を指定する場合は、スパンまたは div でラップする必要があります。
あなたの問題は、データを出力するために間違った方法を使用していて、それが何か他のことを期待していることです。クラス名で生データを出力する組み込みの方法はありません。
したがって、css を適用できるコンテナに未加工のアイテムをラップするか、これらに使用するテンプレートを作成してから、次のように DisplayFor でテンプレート名を指定します。
@Html.DisplayFor(m => m.Name, "NameTemplate")