ModelState.IsValid出现为false并且在数据库MVC5中创建新实体

时间:2017-04-26 11:44:53

标签: c# entity-framework asp.net-mvc-5

我正在研究一个MVC5应用程序,当我尝试在数据库中创建一个新实体时,实体将不会创建,因为模型状态将变为false并且在代码上出现错误。我试图放入断点来查看问题的来源,但没有产生错误,我无法弄明白 这是控制器正在做的事情

public ActionResult CreateRestaurant([Bind(Include = "RestaurantID,OwnerId,RestaurantName,RestaurantDescription,RestaurantPhoneNo, RestaurantEmailAddress, RestaurantAddress,County,Lat,Long,OpeningTime,ClosingTime,Rating,RestaurantType,FurtherDetails")] Restaurant restaurant)
    {
        if (ModelState.IsValid)
        {
            //setting the owner of the restaurant to be the current logged in users id
            string currentUserId = User.Identity.GetUserId();
            restaurant.OwnerId = currentUserId;

            //set the logged on users email to be the email address of the restaurant.
            var email = User.Identity.GetUserName();
            restaurant.RestaurantEmailAddress = email;

            //Convert.ToString(restaurant.NoticeRequired);
            Convert.ToDouble(restaurant.Long);
            Convert.ToDouble(restaurant.Lat);
            db.Restaurants.Add(restaurant);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(restaurant);
    }

这是我的模特

// Class to manage a single Restaurant
    [Key]
    public int RestaurantID { get; set; }

    //To Test whos on the site
    public string OwnerId { get; set; }

    //Name
    [Required(ErrorMessage = "You must enter a Restaurant Name")]
    [DataType(DataType.Text)]
    [StringLength(150, ErrorMessage = "Restaurant Name cannot be longer than 150 characters")]
    [Display(Name = "Restaurant Name")]
    public string RestaurantName { get; set; }


    //Discription
    [Display(Name = "Description")]
    [StringLength(200, ErrorMessage = "Discription is too long")] //character remaining count
    public string RestaurantDescription { get; set; }

    //Phone Number
    [Required(ErrorMessage = "You must enter a Phone Number")]
    [DataType(DataType.PhoneNumber)]
    [Display(Name = "Phone Number")]
    public string RestaurantPhoneNo { get; set; }

    //Email
    [Required(ErrorMessage = "You must enter a valid Email Address")]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "Email Address")]
    public string RestaurantEmailAddress { get; set; }

    //Address
    [Display(Name = "Address")]
    [StringLength(200, ErrorMessage = "Address is too long")] //character remaining count
    public string RestaurantAddress { get; set; }

    //County
    [Display(Name = "County")]
    [StringLength(200, ErrorMessage = "Please Select County")]
    public string County { get; set; }

    //Latidude
    [Display(Name = "Latitude Co-Ordinates")]
    //[StringLength(200, ErrorMessage = "Please enter Latidute Co-Ordinates")]
    public double Lat { get; set; }

    //Longitude
    [Display(Name = "Longitude Co-Ordinates")]
    //[StringLength(200, ErrorMessage = "Please enter Longitude Co-Ordinates")]      ADD BUTTON TO GET COORDS
    public double Long { get; set; }

    //Opening Time
    [Required(ErrorMessage = "Please enter the restaurants opening time")]
    [Display(Name = "Opening Time")]
    [DataType(DataType.Time)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:HH:mm}")]
    public DateTime OpeningTime { get; set; }

    //Closing Time
    [Required(ErrorMessage = "Please enter the restaurants closing time")]
    [Display(Name = "Closing Time")]
    [DataType(DataType.Time)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:HH:mm}")]
    public DateTime ClosingTime { get; set; }

    //Rating
    [Display(Name = "Rating")]
    public double Rating { get; set; }

    //Type
    [Required(ErrorMessage = "Please select Restaurant Type")]
    [Display(Name = "Restaurant Type")]
    [DataType(DataType.Text)]
    public RestaurantType RestaurantType { get; set; }

    ////Amount of notice Required
    //[Display(Name = "Amount of Notice Required")]
    //[DataType(DataType.Text)]
    //public string NoticeRequired { get; set; }

    //Further Details        
    [Required(ErrorMessage = "Please enter any further details about your restaurant")]
    [Display(Name = "FurtherDetails")]
    [DataType(DataType.Text)]
    public string FurtherDetails { get; set; }

    //List of reservations for this restaurant 
    public virtual List<RestaurantReservationEvent> RestaurantBooking { get; set; }
}//end Restaurant

当我注释掉ModelState.IsValid行时,实体被添加好了

1 个答案:

答案 0 :(得分:0)

根据您的代码,似乎是您的&#34;模型&#34;的标签中的规则之一。上课不受尊重。这可能会使模型处于无效状态。

使用断点或记录器,您应该能够看到模型中的内容无效。