Razor を使用してフォームの非表示フィールドに入力した値がいくつかあります。context.tt
フォームを送信すると、Entity Frameworkが特定のフィールドのモデルで作成した検証に合格しません。送信すると、フィールドを null にすることはできないというエラーがスローされます。これにより、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="" />
input
with idLoanStatus
に値が設定されているのに、null にできないというエラーがスローされているのはなぜだろうと思っています。スローされる例外は次のとおりです。
System.Data.ConstraintException このプロパティを null 値に設定することはできません。
HTML で値を設定するには、ViewBag を使用してコントローラーで設定しますViewBag.LoanStatus = "Not Complete";
。次にcshtmlファイルで@Html.HiddenFor(model => model.LoanStatus, new { @Value = ViewBag.LoanStatus })
MVC と Entity Framework は初めてです。
編集 - 追加のコード その他の隠し要素
@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="" />
.cshtmlファイルからの
Htmlヘルパー行のない編集コード<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" />