سؤال

بالنسبة إلى كائن مستخدم في مشروع ASP.NET MVC الخاص بي، كتبت modelbinder مخصص للتحقق مما إذا كانت كلمات المرور صالحة وما إذا كانت كلمة مرور مطابقة تم إدخالها وغيرها.

يجب أن يكون اسم تسجيل الدخول فريدا من نوعه، كنت أتساءل عما إذا كان يمكنني التحقق من ذلك في modelbinder، أم أن هذه تعتبر ممارسة سيئة؟

الشيء هو أنه يتم استدعاء الموثق قبل أن تصل إلى وحدة التحكم، لذلك سيكون لدي مثيلتين من DataContext الخاص بي العائمة، وبالتالي اتصالات متعددة إلى قاعدة البيانات، أعتقد أنني يمكن أن أقوم بإعداد مصنع من الأنواع لذلك.

هذا مقتطف رمز ما أفعله الآن في وحدة التحكم:

// POST: /Users/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Users user)
{            
    myDataContext db = new myDataContext();

    if (!ViewData.ModelState.IsValid)
    {                
        return View(user);
    }            

    Users testUser = db.Users.SingleOrDefault(p => p.LoginNaam == user.LoginNaam);
    if (testUser != null) { //Error stuff here }
}
هل كانت مفيدة؟

المحلول

لن أتحقق من توفر اسم المستخدم في نموذج الموثق. أعتقد أنه CreateUser وظيفة طريقة للقيام بذلك في هذه الحالة.

لذلك سيكون الإجراء هكذا:

// POST: /Users/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Users user)
{            
    myDataContext db = new myDataContext();

    if (!ViewData.ModelState.IsValid)
    {                
        return View(user);
    }

    try {
        db.CreateUser(User);
    }
    catch (ArgumentException e) {
        ModelState.AddModelError(e.ParamName, e.Message);
        return View(user);
    }
    return View("UserCreated", user)
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top