5

これは非常に簡単な質問です。

私は Html.helper を持っています:

@Html.DisplayFor(modelItem => item.Text)

item.Text の文字列を特定の長さに切り詰めるにはどうすればよいですか? SubStringitem.Text に対して直接何かを実行していただければ幸いです。

なぜこれが必要なのか疑問に思っている場合は、文字列が非常に長いため、インデックス ビューなどで少しだけ表示したいためです。

4

5 に答える 5

4

考えられる可能性は 3 つあります。

  1. ビューに送信する前に、マッピング レイヤーのテキストを削除します (ドメイン モデルをビュー モデルに変換する場合)。
  2. カスタム HTML ヘルパーを作成する
  3. 指定されたタイプのカスタム表示テンプレートを作成し、正しい表示テンプレートを示す 3 つの可能性を記述します。1) 規則に依存します (この場合、何もする必要はありません。テンプレートは自動的に選択されます) 2) ビュー モデル プロパティを UIHint で装飾します。属性 3) テンプレート名を 2 番目の引数として DisplayFor ヘルパーに渡します。
于 2011-09-02T09:18:54.833 に答える
3

文字列の切り捨てを行い、代わりにそれを表示するプロパティをビューモデルに追加するだけです:

// View model
public string TextShort { get { return Text.Substring(0, 10); } }

// View
@Html.DisplayFor(modelItem => item.TextShort)
于 2011-09-02T09:22:25.020 に答える
2

変化する

@Html.DisplayFor(modelItem => item.Text) 

@Html.Display(item.Text.Length > 10 ? item.Text.Substring(0,10) : item.Text)
于 2013-06-12T03:55:46.033 に答える
0

編集:新しい回答

どうですか

@{
 modelItem.ShortText= model.Text.Substring(0, ....);
}

@Html.DisplayFor(modelItem => item.ShortText)

DisplayFor のプロトタイプは次のとおりです。

public static MvcHtmlString DisplayFor<TModel, TValue>(
    this HtmlHelper<TModel> html,
    Expression<Func<TModel, TValue>> expression
)

そして、modelItem は動的だと思うので、ビュー モデルに新しいプロパティを追加できるはずです。

于 2011-09-02T09:28:11.083 に答える