设置 Html.Hiddenfor 的值

8
我有一个表单,用于提交竞标。
@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(使用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" />

什么是正确的方式?或者传递值给我的代码还有其他方法吗?我只需要在Postback方法中得到Car_id。
3个回答

20

虽然Raphaël Althaus所说的是正确的,但在重构期间使用硬编码字符串总是令人痛苦。所以尝试这个。

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

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

通过这种方式,它仍将成为您的模型的一部分,而且更加干净整洁。


1
进一步思考后,我完全放弃了ViewBag并在控制器中设置了Id。我已经传递了我的模型,所以在视图中将它们合并起来似乎很愚蠢。 - Rich

6

如果 Car_id 不是您模型的一部分,则无法使用 HiddenFor,而必须使用 Hidden

类似这样的情况

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

假设你的 ViewBag.car.id 中有内容,那么你得到的错误似乎意味着里面没有任何东西。
或者它是你的模型的一部分,你不需要一个 ViewBag。你应该在与该视图相关的操作中设置其值。

这是我的模型的一部分,但它还没有设置。表单是用来插入出价的,但我需要汽车ID才能插入它,而我不能要求用户插入ID... 我会尝试使用Hidden!谢谢! - Lonefish
现在它可以工作了,但是我该如何在控制器中捕获它呢?因为它不再是我的模型的一部分了。 - Lonefish

3
@Html.HiddenFor(model => model.Car_id, htmlAttributes: new { @Value = ViewBag.Car_id })

当您执行此操作时,请在客户端检查隐藏标签的HTML。现在您将拥有“Value”和“value”标记。一个以小写字母开头,另一个以大写字母开头。 - Robert Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接