我正在研究一个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行时,实体被添加好了
答案 0 :(得分:0)
根据您的代码,似乎是您的&#34;模型&#34;的标签中的规则之一。上课不受尊重。这可能会使模型处于无效状态。
使用断点或记录器,您应该能够看到模型中的内容无效。