Pertanyaan ModelState.AddModelError mengkodekan HTML


Saya memperhatikan masalah aneh saat menggunakan ModelState.AddModelError untuk memvalidasi masukan pada formulir saya. Output dari Html.ValidationMessage bukanlah nilai HTML yang sebenarnya tetapi nilai yang dikodekan dan gaya CSS tidak diterapkan ke pesan kesalahan.

Contoh:

private string errorMessage = "<span class=\"negative\">{0}</span><br class=\"hid\" />";
ModelState.AddModelError("title", String.Format(errorMessage, "Tab title is required"));

Output ditampilkan sebagai:

<span class="field-validation-error">&lt;span class=&quot;negative&quot;&gt;URL is Required&lt;/span&gt;&lt;br class=&quot;hid&quot; /&gt;</span>

Ini tidak digunakan untuk menjadi kasus dengan beta sebelumnya dan saya tidak yakin pendekatan apa yang harus dilakukan di sini.

Terima kasih Nick


14
2018-04-07 19:03


asal


Jawaban:


Ada cara lain untuk melakukannya juga, tanpa harus membuat ekstensi sendiri.

Katakanlah misalnya kita memiliki yang berikut di salah satu pengendali kami:

ModelState.AddModelError("Name", "<b>Please Use a Valid Person Name</b>");

Kami kemudian dapat melakukan hal berikut dalam pandangan kami:

@if(Html.ValidationMessageFor(x => x.Name) != null){
    @Html.Raw(Html.ValidationMessageFor(x => x.Name).ToString())
}

Akan mencegah pesan kesalahan '<b>Please Use a Valid Person Name</b>' dari dikodekan.


14
2017-10-28 19:45



Buat metode ekstensi Anda sendiri yang meniru Html.VallidationMessage ...?

Saya harus melakukan sesuatu yang serupa karena dibangun dalam hal validasi MVC (ModelState, ValidationMessage, dll.) Tidak memenuhi halaman yang memiliki lebih dari satu formulir di halaman.


1
2018-04-08 01:36