web-dev-qa-db-ja.com

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の値を車の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" />

これを行う正しい方法は何ですか?または、コードに値を渡す他の方法はありますか? PostbackメソッドにCar_idが必要です。

7
Lonefish

raphaëlAlthausがハードコードされた文字列を使用して正しいと言ったことは、リファクタリング中は常に苦痛です。だからこれを試してみてください

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

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

このようにして、それはまだあなたのモデルの一部であり、はるかにきれいになります。

17
Anto Subash

どちらかCar_idはモデルの一部ではないため、HiddenForを使用できませんが、Hiddenを使用する必要があります

何かのようなもの

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

viewBag.car.idに何かがあると仮定すると、表示されるエラーは、そこに何もないことを意味しているようです。

または、モデルの一部であり、ViewBagは必要ありません。そのビューに関連するアクションでその値を設定する必要があります。

6