4

@ Html.EditorForで機能するが、@Html.DisplayForでは機能しない顧客アドレスを複数行で表示しようとしています。私はここで他の投稿を試しましたが、うまくいきませんでした。これが私が始めたものと私が運がなかったものです

@Html.DisplayFor(model => model.CustomerPostalAddress)
@Html.Raw(Html.Encode(Model.CustomerPostalAddress).Replace("\n","<br/>"))

これがモデルのフィールドです

 [DataType(DataType.MultilineText)]
 public string CustomerPostalAddress { get; set; }

どんな助けでも大歓迎です

4

3 に答える 3

6

Views / Shared / DisplayTemplates/DisplayPostalAddr.cshtmlにDisplayTemplateを作成する必要があります

@model string

<p>@Model</p>

次に、モデルにそれを表示する方法のヒントを与えます

[DataType(DataType.MultilineText)]
[UIHint("DisplayPostalAddr")]
public string CustomerPostalAddress { get; set; }
于 2012-11-08T21:23:07.183 に答える
6

このcssスタイルプロパティを追加して複数行のテキストをレンダリングするだけです。これは、.replaceのようなサーバー側の文字列操作を消費するCPUよりも優れています。

.multiline
{
   white-space: pre-wrap;
}

それから

<div class="multiline">
  my multiline
  text
</div>

これにより、 br要素のような改行がレンダリングされます。

ここで試してみてください:https ://snippet.run/xaf4

于 2013-06-24T10:38:52.947 に答える
1

make DisplayFor表示の改行で述べたように、次の行だけDataType.MultilineText/Views/Shared/DisplayTemplates/MultilineText.cshtml含むのデフォルトのDisplayTemplateをオーバーライド(導入しますか?)します。

<span style="white-space: pre-wrap">@this.Model</span>

UIHint他の参照や登録は必要なかったので、このテンプレートは自動的に解決されると思います。(もちろん、必要に応じて、css-classを導入したり、ビュー内の改行を置き換えたりすることもできます。)

デフォルトのDisplayTemplateを使用すると、で注釈が付けられたプロパティだけでなく、(タイプセーフで意味のある)で注釈が付けられたすべてのプロパティの改行が修正されます。[DataType(DataType.MultilineText)]UIHint("DisplayPostalAddr")

于 2019-12-09T13:28:50.377 に答える