簡體   English   中英

隱藏字段中的值未傳遞到EF上下文模型

[英]Value from hidden field is not being passed to the EF context model

我有一些值已使用Razor放入表單的某些隱藏字段中。 當我提交表單時,它沒有通過實體框架在某個字段的context.tt模型中創建的驗證。 當我提交時,有一個錯誤提示該字段不能為空。 這使我相信HTML中的值是空的。 當我檢查源時,這就是我發現的內容:

<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為LoanStatusinput設置了一個值,但是拋出錯誤,說它不能為null。 拋出的異常是:

System.Data.ConstraintException此屬性不能設置為null值。

要在HTML中設置值,我在控制器中使用ViewBag, ViewBag.LoanStatus = "Not Complete";來設置它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幫助程序行的EDIT代碼 <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" />

使用@Html.HiddenFor ,將從模型對象中讀取輸入值。 您嘗試通過為Value屬性指定一個值來覆蓋它。 我想這是行不通的,而且如您所見,您會得到空值屬性。

要解決您的問題,請不要使用viewbag,而是將具有設置值的模型對象傳遞給視圖,如下所示:

控制器:

return View(new YourModel { LoanStatus = "Not Complete" });

視圖:

@Html.HiddenFor(m => m.LoanStatus)

而不是在這里使用Html幫助程序,為什么不嘗試按如下所示手動進行生產:

<input type="hidden" name="LoanStatus" value="@ViewBag.LoanStatus"/>

我仍然不知道為什么您的每一行都有在2個地方設置的值。 您可以發布更多代碼嗎?

編輯:我認為小寫的值被傳遞回您的控制器。 嘗試改用@value(小寫字母v),看看是否可以解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM