ERROR: The ID field is required.
2012-03-31 10:22 Wizardlsw 阅读(1632) 评论(2) 编辑 收藏 举报问题
昨天晚上在家里试着使用Asp.net MVC 4,并学习使用AreaRe girstration, 创建了一个新的Area叫做“Admin”,运行正常。而遇到的问题是实现步骤如下:
- 添加新model类,叫SiteColumn
- 在Area/Admin/Controllers下添加针对SiteColumn的Controller,同时支持Index , Create, Edit, Update及Delete
- 进入 Create 准备进行添加操作
- 输入完整的数据提交
在这里面我会遇到错误,但界面没有什么变化及提示(实际上有,但没有文字)。
之后,通过修改Create.cshtml中,将@Html.ValidationSummary(true)改成 @Html.ValidationSummary("Error Messages:");终于出现了错误信息如下:
Error Messages:
- The ID field is required.
解决方案
修改处理POST的Create方法:
修改前:
[HttpPost]
public ActionResult Create(SiteColumn sitecolumn)修改后:
[HttpPost]
public ActionResult Create([Bind(Exclude="id")]SiteColumn sitecolumn)
原因
摘下其中一段:
The reason for the issue is answered by Brad Wilson via Paul Speranza in one of the comments below where he says (cheers Paul):
You're providing a value for ID, you just didn't know you were. It's in the route data of the default route ("{controller}/{action}/{id}"), and its default value is the empty string, which isn't valid for an int. Use the [Bind] attribute on your action parameter to exclude ID. My default route was: new { controller = "Customer", action = "Edit", id = " " } // Parameter defaults
不过,有个奇怪且暂时不解的是,网站的默认Controller及View下按默认创建步骤,没加[Bind(Exclude = “ID”)] 仍然可以提交并成功添加数据。 有谁知道的可以说明一下,谢谢!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步