2014-01-12 22 views
7

我有一個表單來提交出價。設置一個Html.Hiddenfor的值爲

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "Login" })) 
{ 
    @Html.ValidationSummary(true, "Gelieve alle velden in te vullen.") 

    @Html.LabelFor(m => m.Bid)<br /> 
    @Html.TextBoxFor(m => m.Bid)<br /> 
    @Html.LabelFor(m => m.Name)<br /> 
    @Html.TextBoxFor(m => m.Name)<br />  
    @Html.LabelFor(m => m.Email)<br /> 
    @Html.TextBoxFor(m => m.Email)<br /> 
    @Html.HiddenFor(model => model.Car_id, new { value = ViewBag.car.id }) 
    <input type="submit" value="Bied" class="button" /> 
} 

我想設置的hiddenfor的車(我與viewbag得到它)的id的值,但在這裏看到它不工作:

<input data-val="true" data-val-number="The field Car_id must be a number." data-val-required="Het veld Car_id is vereist." id="Car_id" name="Car_id" type="hidden" value="" /> <input type="submit" value="Bied" class="button" /> 

什麼是這樣做的正確方法?或者還有其他方法將值傳遞給我的代碼?我只是需要Car_id在回發方法..

回答

17

甚至認爲RaphaëlAlthaus所說的正確使用硬編碼字符串在重構過程中總是很痛苦。所以試試這個

@{ 
    Model.Car_id = ViewBag.car.id; 
} 

@Html.HiddenFor(model => model.Car_id) 

通過這種方式,它仍然是你的模型的一部分,更多更乾淨。

+0

謝謝!這完美的作品! – Lonefish

+1

進一步提出這個想法,我完全拋棄了ViewBag並在控制器中設置了Id。我已經通過了我的模型,所以通過這兩種方法只是爲了在視圖中合併它們似乎很愚蠢。 – Rich

6

要麼Car_id是不是你的模型的一部分,則不能使用HiddenFor,但必須使用Hidden

@Html.Hidden("Car_id", ViewBag.car.id) 

假設你在ViewBag.car.id中有一些東西,你得到的錯誤似乎意味着沒有任何內容。

或它是你的模型的一部分,你不應該需要一個ViewBag。您應該在與該視圖相關的操作中設置其值。

+0

這是我的模型的一部分,但它尚未設置。形式是插入一個出價,但我需要車ID插入它,我不能要求用戶插入一個ID ...我會嘗試隱藏!謝謝! – Lonefish

+0

它現在可以工作,但是如何在控制器中捕獲它?既然它不再是我的模型的一部分? – Lonefish