Saya memiliki beberapa masalah dengan Html.ValidationSummary. Saya tidak ingin menampilkan kesalahan properti di ValidationSummary. Dan ketika saya mengatur Html.ValidationSummary (true) tidak menampilkan pesan kesalahan dari ModelState. Ketika ada beberapa Pengecualian dalam aksi pengontrol pada string
MembersManager.RegisterMember(member);
bagian tangkapan menambahkan kesalahan ke ModelState:
ModelState.AddModelError("error", ex.Message);
Tetapi ValidationSummary tidak menampilkan pesan kesalahan ini. Ketika saya mengatur Html.ValidationSummary (false) semua pesan ditampilkan, tetapi saya tidak ingin menampilkan kesalahan properti. Bagaimana saya bisa memperbaiki masalah ini?
Ini kode yang saya gunakan:
Model:
public class Member
{
[Required(ErrorMessage = "*")]
[DisplayName("Login:")]
public string Login { get; set; }
[Required(ErrorMessage = "*")]
[DataType(DataType.Password)]
[DisplayName("Password:")]
public string Password { get; set; }
[Required(ErrorMessage = "*")]
[DataType(DataType.Password)]
[DisplayName("Confirm Password:")]
public string ConfirmPassword { get; set; }
}
Pengendali:
[HttpPost]
public ActionResult Register(Member member)
{
try
{
if (!ModelState.IsValid)
return View();
MembersManager.RegisterMember(member);
}
catch (Exception ex)
{
ModelState.AddModelError("error", ex.Message);
return View(member);
}
}
Melihat:
<% using (Html.BeginForm("Register", "Members", FormMethod.Post,
new { enctype = "multipart/form-data" })) {%>
<p>
<%= Html.LabelFor(model => model.Login)%>
<%= Html.TextBoxFor(model => model.Login)%>
<%= Html.ValidationMessageFor(model => model.Login)%>
</p>
<p>
<%= Html.LabelFor(model => model.Password)%>
<%= Html.PasswordFor(model => model.Password)%>
<%= Html.ValidationMessageFor(model => model.Password)%>
</p>
<p>
<%= Html.LabelFor(model => model.ConfirmPassword)%>
<%= Html.PasswordFor(model => model.ConfirmPassword)%>
<%= Html.ValidationMessageFor(model => model.ConfirmPassword)%>
</p>
<div>
<input type="submit" value="Create" />
</div>
<%= Html.ValidationSummary(true)%>
<% } %>
ModelState.AddModelError(string.Empty, ex);
sepertinya juga tidak berfungsi. Anda harus menggunakanModelState.AddModelError(string, string)
kelebihan seperti yang ditunjukkan di atas.Ini berfungsi lebih baik, karena Anda dapat menampilkan validationMessage untuk kunci yang ditentukan:
dan tampilkan seperti ini:
sumber
Saya tahu ini agak tua dan telah ditandai sebagai jawaban dengan 147 suara, tetapi ada hal lain yang perlu dipertimbangkan.
Anda dapat memiliki semua kesalahan model, properti yang dinamai dan string. Kunci yang sama, ditampilkan di Ringkasan Validation jika Anda perlu. Ada kelebihan dalam Ringkasan Validation yang akan melakukan ini.
sumber
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
ke@Html.ValidationSummary(false, "", new { @class = "text-danger" })
Mungkin seperti itu:
Dan di layar tambahkan:
ATAU
sumber
Menggunakan baris ini mungkin membantu
sumber
Dalam kasus saya itu tidak berfungsi karena pengembalian.
Alih-alih menggunakan:
Saya menggunakan:
Itu Model, jadi sangat membingungkan
ModelState.AddModelError("keyName","Message");
harus bekerja dengan model.Jawaban ini menunjukkan mengapa. Menambahkan validasi dengan DataAnnotations
sumber
Jika hampir semuanya tampak benar, hal lain yang perlu diperhatikan adalah memastikan bahwa ringkasan validasi tidak disembunyikan secara eksplisit melalui beberapa CSS override seperti ini:
Ini juga dapat menyebabkan itu
@Html.ValidationSummary
tampak tersembunyi, karena ringkasan secara dinamis diberikan denganvalidation-summary-valid
kelas.sumber
Anda dapat mencoba,
sumber
TAMBAHKAN di bagian paling bawah dan Tampilan Anda:
sumber