12

次のコードを使用して、ビュー モデルのテキストをビューに表示しています。

@Html.DisplayFor(m => m.Name)

IE9 で HTML の詳細 (仕事で使用する必要があります) を見ると、名前に関連付けられたクラスはなく、表示フィールド クラスのスタイリングではなく Body CSS スタイリングを使用しているだけです。この問題の原因や、作成したテキストの CSS を編集する方法を知っている人はいますか?

4

2 に答える 2

17

ラベルの場合は、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.DisplayForexpression と の 2 つのパラメーターを受け入れるオーバーロードがありますobject additionalViewData。したがって、渡す 2 番目のパラメーターは、匿名オブジェクトの additionalViewData です。というプロパティでこのオブジェクトを作成しますclass

次に、html ヘルパー内で、キーclassを持つ ViewData があるかどうかを確認し、ある場合は、そのクラス値を持つスパン内に出力を配置します。

** "class" は適切な変数名ではないため、変数名を からclassに更新しました。myClass

于 2012-07-25T18:09:52.577 に答える
12

DisplayFor は、テンプレート化のために使用されます。テンプレートを使用していない場合は、次のようにアイテムを使用する@Model.Name 必要があります。クラスまたは ID を指定する場合は、スパンまたは div でラップする必要があります。

あなたの問題は、データを出力するために間違った方法を使用していて、それが何か他のことを期待していることです。クラス名で生データを出力する組み込みの方法はありません。

したがって、css を適用できるコンテナに未加工のアイテムをラップするか、これらに使用するテンプレートを作成してから、次のように DisplayFor でテンプレート名を指定します。

 @Html.DisplayFor(m => m.Name, "NameTemplate")
于 2012-07-25T18:58:57.943 に答える