【问题标题】:Set the value of a Html.Hiddenfor设置 Html.Hiddenfor 的值
【发布时间】:2014-01-31 05:35:25
【问题描述】:

我有一个表格,可以提交投标。

@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 ..

【问题讨论】:

    标签: asp.net asp.net-mvc-4 html.hiddenfor


    【解决方案1】:

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

    类似

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

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

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

    【讨论】:

    • 它是我模型的一部分,但尚未设置。表格是插入出价,但我也需要汽车ID来插入它,而且我不能要求用户插入一个ID......我会尝试隐藏!谢谢!
    • 它现在可以工作了,但是我如何在我的控制器中捕获它?因为它不再是我模型的一部分了?
    【解决方案2】:

    甚至认为 Raphaël Althaus 所说的使用硬编码字符串是正确的,在重构过程中总是很痛苦。所以试试这个

    @{
       Model.Car_id = ViewBag.car.id;
    }
    
    @Html.HiddenFor(model => model.Car_id)
    

    通过这种方式,它仍然会成为您模型的一部分,并且更加简洁。

    【讨论】:

    • 进一步思考,我完全取消了 ViewBag 并在控制器中设置了 Id。我已经通过了我的模型,所以将它们都传递给视图似乎很愚蠢。
    【解决方案3】:
    @Html.HiddenFor(model => model.Car_id, htmlAttributes: new { @Value = ViewBag.Car_id })
    

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 2012-08-28
      • 2015-11-07
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      相关资源
      最近更新 更多