今天在MVC3下使用实体框架遇到一个奇怪的问题,几经找寻无结果,特寻求帮助
新建MVC3项目,然后在Models文件夹中添加新项:ADO.NET 实体数据模型,选择Northwind数据库,选择全部的表,然后继续操作完成.重新生成项目,此时已经有一个Model1.edmx的文件在Models里面了.
在Controllers文件夹中添加新的Controller,此处选择Shipper表,键入ShipperController,模板选择第二个包含读写的使用Entity Framework,选择实体Shipper,然后选择上下文NorthwindEntities,也就是此前添加的Model1.edmx.
重新生成项目,按F5启动调试,在浏览器查看页面.浏览刚添加的对Shipper表的操作页面,选择Create New,跳转到添加页面,什么都不输入,直接点击Create按钮,异常就出现了.(如图1)进入了VS的调试状态,并显示异常的位置,中断调试模式,页面正常显示,正常验证,并提示”值无效”.(如图2)当再次点击Create New,并直接点击Create的时候,没有异常显示,并正常提示,不知道这是为什么.查阅异常名称,也不得其解.
图1
图2
就是说你不能设置为 null 值。
嗯,在调试状态(F5)下,提示不能设置为null
在运行状态下(Ctrl+F5),什么都不输入,直接点Create(添加)的时候,是出提示信息"值“”无效。"
MVC3会自带非空验证,但是在调试模式下,按照上述的操作,似乎未触发验证.
@晴空万里i: 你能把你的 Create 的代码贴出来吗?
@Launcher: Create就是自动生成的代码哈
1 // 2 // GET: /Shipper/Create 3 4 public ActionResult Create() 5 { 6 return View(); 7 } 8 9 // 10 // POST: /Shipper/Create 11 12 [HttpPost] 13 public ActionResult Create(Shipper shipper) 14 { 15 if (ModelState.IsValid) 16 { 17 db.Shippers.AddObject(shipper); 18 db.SaveChanges(); 19 return RedirectToAction("Index"); 20 } 21 22 return View(shipper); 23 }
@晴空万里i: 代码没有问题,如果你为 CompanyName 指定了验证规则的话, 当你不输入值的时候,ModelState.IsValid 应该是 false,请你自行检查下。
就是实体框架添加以后,添加Controller的时候默认生成的方法哈.