【发布时间】:2012-12-12 23:29:16
【问题描述】:
我使用 Razor 在表单的一些隐藏字段中输入了一些值。当我提交表单时,它没有通过实体框架在某个字段的context.tt 模型中创建的验证。当我提交时,会抛出一个错误,指出该字段不能为空。这让我相信 HTML 中的值是 null。当我检查来源时,这是我发现的:
<input Value="1" data-val="true" data-val-number="The field PoolType must be a number." id="PoolType" name="PoolType" type="hidden" value="" />
<input Value="Not Complete" id="LoanStatus" name="LoanStatus" type="hidden" value="" />
<input Value="2012-12-12 09:26.39" data-val="true" data-val-required="The DateStamp field is required." id="DateStamp" name="DateStamp" type="hidden" value="" />
我想知道为什么 ID 为 LoanStatus 的 input 设置了一个值,但它抛出一个错误,说它不能为空。抛出的异常是:
System.Data.ConstraintException 此属性不能设置为空值。
为了在 HTML 中设置值,我使用 ViewBag 在控制器中设置它,ViewBag.LoanStatus = "Not Complete";。然后在cshtml文件中@Html.HiddenFor(model => model.LoanStatus, new { @Value = ViewBag.LoanStatus })
有什么我遗漏的吗,我是 MVC 和实体框架的新手。
编辑 - 附加代码 更多隐藏元素
@Html.HiddenFor(model => model.ID, new{ @Value = ViewBag.ID })
@Html.HiddenFor(model => model.Reason, new{ @Value = ViewBag.Reason })
@Html.HiddenFor(model => model.PoolType, new{ @Value = ViewBag.PoolType })
@Html.HiddenFor(model => model.LoanStatus, new{ @Value = ViewBag.LoanStatus })
@Html.HiddenFor(model => model.DateStamp, new{ @Value = ViewBag.DateTime })
以及生成的html
<input Value="55" data-val="true" data-val-number="The field ID must be a number." data-val-required="The ID field is required." id="ID" name="ID" type="hidden" value="" />
<input Value="1" data-val="true" data-val-number="The field Reason must be a number." id="Reason" name="Reason" type="hidden" value="" />
<input Value="1" data-val="true" data-val-number="The field PoolType must be a number." id="PoolType" name="PoolType" type="hidden" value="" />
<input Value="Not Complete" id="LoanStatus" name="LoanStatus" type="hidden" value="" />
<input Value="2012-12-12 10:00.46" data-val="true" data-val-required="The DateStamp field is required." id="DateStamp" name="DateStamp" type="hidden" value="" />
在没有 Html 帮助器的情况下编辑代码
来自 .cshtml 文件的行
<input type="hidden" name="LoanStatus" id="LoanStatus" data-val="true" value="@ViewBag.LoanStatus" />
来自 html 源代码的行
<input type="hidden" name="LoanStatus" id="LoanStatus" data-val="true" value="Not Complete" />
【问题讨论】:
-
可以显示动作方法代码吗?
-
为什么该行中有两次“Value”?
-
@vtortola 你的意思是在 context.tt 中进行验证的方法吗?
标签: c# .net asp.net-mvc-3 entity-framework-4