7

MVC3 C#.NetWebアプリを持っています。DataTableをループしています。一部の行は正常にインポートされていますが、そうでない行もあります。エラーのリストをリスト形式でビューに送り返したいのですが。次のテキストをViewBagプロパティに割り当てています

Input error on Row(1) Cell(3) Input string was not in a correct format.<br/> Input error on Row(4) Cell(3) Input string was not in a correct format.<br/>

私はbrがHTMLに改行を書くことを望んでいました。そうではありません。エラーメッセージを次のように表示したい

Input error on Row(1) Cell(3) Input string was not in a correct format.
Input error on Row(4) Cell(3) Input string was not in a correct format.

何か案は?

4

4 に答える 4

14

ビューに投げ込むときは、

@Html.Raw(ViewBag.Test)

それ以外の

@ViewBag.Test

これは、文字列がhtmlであり、そのようにエンコードする必要がないことをコンパイラに示します。

于 2012-02-08T17:39:14.720 に答える
8

string[]エラーを保持するには、を使用します。そうすれば、それらは1つの長い文字列ではなく、整形式で明確なエラーのセットになります。

コントローラで、ViewBagプロパティを初期化します。

ViewBag.Errors = new string[] { "First error", "Second error" };

ビューで、次のエラーを表示します。

@foreach (string error in ViewBag.Errors)
{
    @Html.Label(error)
    <br />
}

関心事の分離

コントローラ内でマークアップレイアウト(つまり、改行、またはその他のDOM要素) を処理しないでください。プレゼンテーションは、ビューのみで処理する必要があります。そのため、を渡すのが最適string[]です。

于 2012-02-08T17:36:23.587 に答える
0

これは私のために働いた:

コントローラ:

 ViewBag.Msg += Environment.NewLine + "xxxx";

意見:

<p class="@ViewBag.MsgColor">
        @Html.Raw(@ViewBag.Msg.Replace(Environment.NewLine, "<br/>"))
 </p>
于 2019-10-01T08:33:20.203 に答える
0

これを行うための私の好ましい方法は<br />、コントローラーコードの行時間にViewData ["msg"]として単純に追加することです。これは、以下のようにかみそりのページから取得できます。

コントローラーコード:

ViewData["msg"] = "Your Query <br /> has been processed.";

かみそりフォームコード:

@Html.Raw(@MsgFormatted)
于 2021-04-09T16:39:38.667 に答える