Asp.net mvc 3 fieldID是必需的。尝试通过MVC3添加新对象时出错,ModelStat.IsValid是否为false错误?

Asp.net mvc 3 fieldID是必需的。尝试通过MVC3添加新对象时出错,ModelStat.IsValid是否为false错误?,asp.net-mvc-3,validation,data-annotations,modelstate,Asp.net Mvc 3,Validation,Data Annotations,Modelstate,我有这个模型: [Key] 公共长KlijentID{get;set;} [必需(ErrorMessageResourceName=“RequiredField”,ErrorMessageResourceType=typeof(资源))] [StringLength(50,ErrorMessageResourceName=“StringLength50”,ErrorMessageResourceType=typeof(资源))] 公共字符串ImePrezime{get;set;} [必需(Err

我有这个模型:

[Key]
公共长KlijentID{get;set;}
[必需(ErrorMessageResourceName=“RequiredField”,ErrorMessageResourceType=typeof(资源))]
[StringLength(50,ErrorMessageResourceName=“StringLength50”,ErrorMessageResourceType=typeof(资源))]
公共字符串ImePrezime{get;set;}
[必需(ErrorMessageResourceName=“RequiredField”,ErrorMessageResourceType=typeof(资源))]
[StringLength(50,ErrorMessageResourceName=“StringLength50”,ErrorMessageResourceType=typeof(资源))]
公共字符串Adresa{get;set;}
//剩下的同学,这个问题不重要。
我认为:

使用(Html.BeginForm(“编辑”、“Klijenti”)) { @Html.HiddenFor(model=>model.KlijentID) @LabelFor(model=>model.ImePrezime) @EditorFor(model=>model.ImePrezime) @Html.ValidationMessageFor(model=>model.ImePrezime) @LabelFor(model=>model.Adresa) @EditorFor(model=>model.Adresa) @Html.ValidationMessageFor(model=>model.Adresa) } 当我使用它从数据库中更新对象时,控制器操作工作正常:

如果(!ModelState.IsValid)抛出新的ValidationException();
var k=新的Klijent();
Mapper.Map(klijent,k);
SaveKlijent回购协议(k);
TempData[“msg”]=MyResources.Properties.Resources.SaveDone;
返回重定向操作(“索引”,第页);
但是当我尝试添加一个新对象时,
ModelState.IsValid
失败,表示需要KlijentID。
ErrorMessage:“KlijentID字段是必需的。”

我已检查,它被设置为0,因为它应该是一个新的对象。这里有什么问题

更新: 我已尝试将其添加到Global.asax中的
应用程序\u Start

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes=false;
结果是我仍然得到一个验证错误,刚才它说:
error消息:“需要一个值。”


这有点奇怪,它似乎真的想要那个值。计算机中的重影?

这是因为表单中的传入数据中没有值。验证引擎检查值字典,如果找不到,则添加ModelState错误。值等于0,因为它是int类型的默认值


要解决这个问题,只需在Create视图中添加@Html.HiddenFor(model=>model.Id)。

我也遇到了同样的问题。我将主键设置为可空类型,所有操作都像一个符咒。

我的“创建”视图中已经有了主键,对不起,我会将其添加到问题“它在哪里?”?内部表单标记?另外,您是如何发布表单的?是的,它是内部表单标记,我已更新了问题中的视图数据。能否在ModelState.IsValid之后添加断点并导航到值列表?模型的每个成员都将有一个错误集合。找到一个不是空的,请在这里发布=)也许这个问题可以帮助你:谢谢你的建议,我已经试着这样做了,我已经在问题中描述了结果:没有工作。知道为什么吗?