设置Html.Hiddenfor的值

Lon*_*ish 7 asp.net asp.net-mvc-4 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" />
}
Run Code Online (Sandbox Code Playgroud)

我想将hiddenfor的值设置为汽车的id(我使用viewbag获取它),但它不能像在这里看到的那样工作:

<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" />
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?或者是否有其他方法将值传递给我的代码?我只需要Postback方法中的Car_id ..

Ant*_*ash 18

甚至认为RaphaëlAlthaus所说的正确使用硬编码字符串在重构过程中总是很痛苦.试试吧

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

@Html.HiddenFor(model => model.Car_id)
Run Code Online (Sandbox Code Playgroud)

通过这种方式它仍然是你的模型的一部分,更清洁.


Rap*_*aus 6

要么Car_id不是你的模型的一部分,那么不能使用HiddenFor,但必须使用Hidden

就像是

@Html.Hidden("Car_id", ViewBag.car.id)
Run Code Online (Sandbox Code Playgroud)

假设你在ViewBag.car.id中有一些东西,你得到的错误似乎意味着那里什么也没有.

或者它是你的模型的一部分,你不应该需要一个ViewBag.您应该在与该视图相关的操作中设置其值.