مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

jamal

عضویت از 1393/02/20

اتریبیوت ریموت هنگام ویرایش کاربر

  • یکشنبه 8 فروردین 1395
  • 13:16
تشکر میکنم

من هنگام ثبت نام یک کاربر از صفت remote برای بررسی ایمیل تکراری استفاده کرده ام.

اما هنگام ویرایش کاربر دوباره ایمیل کاربر را تکراری اعلام میکند باید به چه صورت آن را هندل کرد؟

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 8 فروردین 1395
  • 13:33

در حالت 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)
    {

 

کاربر سایت

jamal

عضویت از 1393/02/20

  • یکشنبه 8 فروردین 1395
  • 15:37

از طریق این کدها می توان با انعطاف بیشتر آن را پیاده سازی کرد.

ابتدا در مدل اصلی برنامه که قرار است روی فیلد ایمیل کاربر انجام شود کد زیر را می نویسیم (در یکی از 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)

 

کاربر سایت

saleh212

عضویت از 1394/12/04

  • دوشنبه 9 فروردین 1395
  • 03:48

سلام من هم به چنین مشکلی برخوردم اقای مدائنی همین کار هم انجام دادم به خطای اعتبارسنجی میخورم راه دیگه ای وجود نداره؟

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)