من هنگام ثبت نام یک کاربر از صفت remote برای بررسی ایمیل تکراری استفاده کرده ام.
اما هنگام ویرایش کاربر دوباره ایمیل کاربر را تکراری اعلام میکند باید به چه صورت آن را هندل کرد؟
در حالت edit در view به شکل زیر اعمال کنید
@Html.TextBoxFor(m => m.username, new { @data_val = "false" })
اینم کد کنترلر
public ActionResult EditUser([Bind(Exclude = "usrname")]RegisterViewModel model) { ModelState.Remove("username"); if (ModelState.IsValid) {
از طریق این کدها می توان با انعطاف بیشتر آن را پیاده سازی کرد.
ابتدا در مدل اصلی برنامه که قرار است روی فیلد ایمیل کاربر انجام شود کد زیر را می نویسیم (در یکی از overload های اتریبیوت Remote از AdditionalFields استفاده کرده ایم):
[Remote("DoesEmailExist", "Users", HttpMethod = "POST", ErrorMessage = "{0} متاسفانه ایمیل وارد شده قبلا به ثبت رسیده است", AdditionalFields = "initialEmail")]
در کنترلر برنامه از یک تابع JsonResult به صورت زیر جهت بررسی ایمیل تکراری کاربر استفاده کرده ایم :
[HttpPost] [AllowAnonymous] [OutputCache(Location = OutputCacheLocation.None, NoStore = true)] public JsonResult DoesEmailExist(string email, string initialEmail) { if (email == initialEmail) { return Json(true, JsonRequestBehavior.AllowGet); } return _unitOfWork.Users.FindEntities(c => c.Email == email).FirstOrDefault() != null ? Json(false, JsonRequestBehavior.AllowGet) : Json(true, JsonRequestBehavior.AllowGet); }
در نهایت در قسمت View مربوط به ویرایش کاربر از کد زیر استفاده می کنیم :
@Html.Hidden("initialEmail", Model.Email)
سلام من هم به چنین مشکلی برخوردم اقای مدائنی همین کار هم انجام دادم به خطای اعتبارسنجی میخورم راه دیگه ای وجود نداره؟
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)