【发布时间】:2016-03-03 14:16:44
【问题描述】:
ModelState.Isvalid 总是显示为假。
我有以下型号
public class MyModel: MyEntity
{
[Key]
public int MyModelID { get; set; }
[Required]
[StringLength(255)]
public string Forename { get; set; }
[Required]
[StringLength(255)]
public string Surname { get; set; }
}
我有这个视图模型
public class MydatabaseVM
{
public MyModel myMode { get; set; }
public virtual Tab2 tab2 { get; set; }
public virtual Employee employee { get; set; }
public virtual Student student { get; set; }
}
我在视图中使用它
<div id="email" class="tab-pane fade">
@Html.HiddenFor(model => model.MyModel.MyModelID )
</div>
在我看来,MyModelID 在隐藏字段中,因为我的页面中有几个选项卡,我想保留 id 以传递给其他选项卡。
保存后,我需要隐藏字段中的MyModelID。在这里,如果我点击保存,当谈到发布操作时,ModelState.IsValid 总是返回 false。
我尝试删除隐藏字段,它是真实的。你能帮我在这里做错什么吗?我的实际要求是在一个页面中我有多个选项卡,主选项卡有一些基本的细节。当我在第一个选项卡上保存数据时,详细信息应该转到数据库并应该生成和 id。当我点击其他选项卡时(使用 ajax和jquery)应该传递给那些数据应该保存到表tab2
【问题讨论】:
-
我认为你有一个错字。您已将 myMode 声明为 MyModel 类型,但是,您正在引用 model.MyModel。如果 MydatabaseWM 是该视图的模型,那么这是一个无效的引用。
-
检查
ModelState.Errors看看有什么问题 -
@haim:error 与 id 有关。 id 需要从数据库中自动生成。如果模型状态有效,我应该去保存记录,那么只有我可以获得 ID。
-
@Irb.: MydatabaseWM 是视图的模型。你能告诉我这是什么错误
-
您的
MyModelID是int类型,因此它会自动触发Required属性。您的模型绑定器可能没有绑定model.MyModel.MyModelID,因此它会将null发送到您的 POST 操作
标签: asp.net-mvc asp.net-mvc-4 razor