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

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

کاربر سایت

karolin

عضویت از 1394/10/16

مشکل ModelState.IsValid

  • پنجشنبه 13 اسفند 1394
  • 20:30
تشکر میکنم
با سلام.من در کنترلر از modelstate.isvalid برای اعتبار سنجی داده های ارسالی استفاده کردم .اما برای هردوحالت داده های معتبر و غیر معتبر (براساس data annotation های کلاس مدل)مقدار true برای modelstate برمیگرده.فضای نام ها و ریپوزیتوری مشکلی نداره.در پارامتر متد کنترلر هم از نوع کلاس مدل استفاده کردم.کد کنترلر در زیر درج شده.لطفا راهنمایی بفرمایید





 [HttpPost]
        public ActionResult register (user myuser)

        {
            usersRepository bluser = new usersRepository();

           if (ModelState.IsValid)
           {
                if (bluser.Add(myuser))
                {
                    return JavaScript("alert('ثبت شد');");
                    //موفق
                }
                else
                {
                    return JavaScript("alert('ثبت نشد');");
                    //ناموفق
                }
            }
            else 
           {
                return JavaScript("alert('خطای مقدار');");
                //خطای مقداری
            }

 

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

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

karolin

عضویت از 1394/10/16

  • پنجشنبه 13 اسفند 1394
  • 20:38

با  سلام.من در کنترلر از modelsatae.isvalid برای اعتبارسنجی داده های ارسالی فرم استفاده کردم.اما در هردو حالت داده های معتبر و غیر معتبر(براساس data annotation های کلاس مدل)مقدار true برای modelstateبرمیگرده .فضای نام ها وریپوزیتوری مشکلی نداره و برنامه موقع بیلد اروری نداره.در پارامتر متد کنترلر هم از نوع کلاس مدل استفاده کردم.کد کنترلر در تاپیک درج شده لطفا راهنمایی بفرمایید

کاربر سایت

ایمان مدائنی

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

  • پنجشنبه 13 اسفند 1394
  • 21:06

صفت های مدل را بررسی کردید ؟

به احتمال زیاد مشکل از آنجاست

کاربر سایت

karolin

عضویت از 1394/10/16

  • پنجشنبه 13 اسفند 1394
  • 21:48
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Web.Mvc;
using my_Eshop.Models.domain_models;

namespace my_Eshop.Models.Entitymodels
{
    internal class UsersMetaData

    {
        [ScaffoldColumn(false)]
        [Bindable(false)]
        public int id { get; set; }

        [Required(ErrorMessage="نام و نام خانوادگی را وارد کنید",AllowEmptyStrings=false)]
        [DisplayName("نام و نام خانوادگی")]
        [Display(Name="نام و نام خانوادگی")]
        [StringLength(50,ErrorMessage="حداکثر 50 کارکتر")]
        public string name { get; set; }
        
        
        [Required(ErrorMessage="ایمیل خودرا وارد کنید")]
        [Display(Name="نام کاربری/ایمیل")]
        [RegularExpression(".+\\@.+\\..+",ErrorMessage="لطفا ایمیل را به درستی وارد کنید")]
        public string username { get; set; }

        [Required(ErrorMessage="رمز عبوررا واردکنید",AllowEmptyStrings=false)]
        [DisplayName("رمز عبور")]
        [Display(Name="رمز عبور")]
        [DataType(DataType.Password)]
        public string password { get; set; }

        [DisplayName("تاریخ تولد")]
        [Display(Name="تاریخ تولد")]
        public Nullable<System.DateTime> birthdate { get; set; }

        [DisplayName("تلفن همراه")]
        [Display(Name="تلفن همراه")]
        [RegularExpression(@"^0?9[123]/d{8}$",ErrorMessage="تلفن همراه را به درستی وارد کنید")]
        public string mob { get; set; }

        [DisplayName("شماره تماس ثابت")]
        [Display(Name="شماره تماس ثابت")]
        public string tel { get; set; }

        [DisplayName("جنسیت")]
        [Display(Name="جنسیت")]
        public bool gender { get; set; }

        [ScaffoldColumn(false)]
        public byte status { get; set; }
    

    }
    namespace my_Eshop.Models.Entitymodels
    {
        [MetadataType(typeof(UsersMetaData))]
        public partial class user{}

    }
}

این کلاس مدل هست البته metadata

کاربر سایت

ایمان مدائنی

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

  • پنجشنبه 13 اسفند 1394
  • 21:50

خب MetaData به مدل اصلی Map شده ؟

کاربر سایت

karolin

عضویت از 1394/10/16

  • پنجشنبه 13 اسفند 1394
  • 22:13

در انتهای همین کدmap شده -سه سطر آخر

کاربر سایت

karolin

عضویت از 1394/10/16

  • جمعه 14 اسفند 1394
  • 08:05

مشکل حل شد.قسمت الحاق باید به صورت زیر باشد.فضای نام مربوطه اشتباه بود.

 

 namespace my_Eshop.Models.domain_models 
    {
        [MetadataType(typeof(my_Eshop.Models.Entitymodels.UserMetaData))]
        public partial class user
        {

    }
}
    

 

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

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

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

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