Asp.net mvc 3 如何在编辑视图中不包含所有字段,但不获取“转换为datetime时溢出”
我对MVC3有些陌生,所以这可能很简单。我有一个紧凑的SQL 4数据库。有一个Post对象具有内容字符串、主题字符串、When DateTime和Reposted DateTime可为空字段。在Create的Post方法中,我手动强制When属性为DateTime.Now,效果非常好 但是,在我的编辑视图中,我不想显示此字段,或者至少不让它成为可编辑字段。当我没有将其作为可编辑字段放在“编辑”视图上,并且他们更改了内容,然后单击“保存”时,我会收到消息: 转换为datetime时发生溢出 在编辑回发期间,我将重新发布字段设置为DateTime。现在,它必须是When字段。当我调试回发时,我看到Post对象中只填充了我在屏幕上显示的字段的值。因此,我决定直接从数据中通过LINQ查询获取When字段,但当我到达SaveChanges时,它失败了,并说: ObjectStateManager中已存在具有相同密钥的对象。ObjectStateManager无法跟踪具有相同密钥的多个对象 那么,如何更新一个对象,让用户只更改几个相关字段呢?Post对象似乎没有获取所有现有值,因为它们没有显示在屏幕上。我怎样才能完全填满那个物体 编辑:这里是Post方法Asp.net mvc 3 如何在编辑视图中不包含所有字段,但不获取“转换为datetime时溢出”,asp.net-mvc-3,c#-4.0,Asp.net Mvc 3,C# 4.0,我对MVC3有些陌生,所以这可能很简单。我有一个紧凑的SQL 4数据库。有一个Post对象具有内容字符串、主题字符串、When DateTime和Reposted DateTime可为空字段。在Create的Post方法中,我手动强制When属性为DateTime.Now,效果非常好 但是,在我的编辑视图中,我不想显示此字段,或者至少不让它成为可编辑字段。当我没有将其作为可编辑字段放在“编辑”视图上,并且他们更改了内容,然后单击“保存”时,我会收到消息: 转换为datetime时发生溢出 在编辑
[HttpPost]
public ActionResult Edit(Post post) {
if (ModelState.IsValid) {
db.Posts.Attach(post);
int Successes = 0;
int Failures = 0;
this.SendEMail(post, out Successes, out Failures);
post.Successes = Successes;
post.Failures = Failures;
post.Reposted = DateTime.Now;
db.ObjectStateManager.ChangeObjectState(post, EntityState.Modified);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(post);
}
在视图中为不想显示的字段包括一个隐藏字段,例如
@Html.HiddenFor(model => model.When)