Saya memiliki beberapa masalah dengan validasi Email.
Dalam Model saya:
[Required(ErrorMessage = "Field can't be empty")]
[DataType(DataType.EmailAddress, ErrorMessage = "E-mail is not valid")]
public string ReceiverMail { get; set; }
Dalam pandangan saya:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@Html.TextBoxFor(m => m.ReceiverMail, new { @placeholder="E-mail"}) <br />
@Html.ValidationMessageFor(m => m.ReceiverMail)
Sekarang dengan benar menunjukkan kepada saya "Bidang tidak boleh kosong" ketika Anda membiarkan bidang itu kosong. Tetapi ketika Anda mengisi alamat email yang tidak valid seperti: "fwenrjfw" maka formulir itu tidak mengatakan "E-mail tidak valid".
Bagaimana saya bisa mendapatkan formulir untuk memvalidasi input sebagai alamat email? Saya mencari bantuan dengan ini.
c#
asp.net-mvc
validation
email-validation
Afca Jawa
sumber
sumber
[DataType(DataType.EmailAddress, ErrorMessage = "Error message.")]
DataType.EmailAddress
bukan tentang validasi. Ini tentang presentasi data ...name@xxx
adalah alamat email yang benar-benar valid, jadi tidak ada yang salah dengan metode itu. Perhatikan contohnyausername@localhost
misalnya.Cobalah
Html.EditorFor
metode pembantu alih-alihHtml.TextBoxFor
.sumber
Anda perlu menggunakan Atribut RegularExpression, sesuatu seperti ini:
Dan jangan hapus [Wajib] karena [RegularExpression] tidak memengaruhi bidang kosong.
sumber
jika Anda belum menggunakan .net 4.5:
Maka Anda dapat melakukan ini:
sumber
Saya menggunakan MVC 3. Contoh properti alamat email di salah satu kelas saya adalah:
Hapus
Required
jika inputnya opsional. Tidak perlu untuk ekspresi reguler walaupun saya punya satu yang mencakup semua opsi dalam alamat email hingga level RFC 2822 (sangat panjang).sumber
[EmailAddress]
dan Anda harus memilikiusing System.ComponentModel.DataAnnotations;
Email
atauRegularExpression
membuat bidang diperlukan. MenghapusRequired
anotasi tidak berpengaruh. Ada saran tentang apa yang harus dilakukan untuk membuat bidang denganRegularExpression
validasi menerima bidang kosong?sumber
sumber
Script biasanya dimuat di akhir halaman html, dan MVC merekomendasikan penggunaan bundel, hanya mengatakan. Jadi taruhan terbaik saya adalah Anda
jquery.validate
file diubah dalam beberapa cara atau tidak diperbarui ke versi terbaru, karena mereka memvalidasi input email.Jadi Anda bisa memperbarui / menyegarkan paket nuget Anda atau menulis fungsi Anda sendiri, sungguh.
Berikut ini contoh yang akan Anda tambahkan dalam file tambahan setelah
jquery.validate.unobtrusive
:Ini hanya salin dan tempel
jquery.validate
Regex saat ini , tetapi dengan cara ini Anda dapat mengatur pesan kesalahan khusus / menambahkan metode tambahan ke bidang yang mungkin ingin Anda validasi dalam waktu dekat.sumber
Seperti di atas ini akan memperbaiki validasi sisi server dari Alamat Email:
Namun...
Jika Anda menggunakan validasi sisi klien JQuery, Anda harus tahu bahwa Email memvalidasi sisi server yang berbeda (validasi model) ke sisi klien (validasi JQuery). Dalam contoh pengujian @ (alamat email domain tingkat atas) akan gagal di sisi server tetapi akan divalidasi dengan baik di sisi klien.
Untuk memperbaiki perbedaan ini, Anda dapat mengganti validasi email sisi klien default sebagai berikut:
sumber