【问题标题】:HiddenFor missing value tagHiddenFor 缺失值标签
【发布时间】:2013-07-09 10:30:20
【问题描述】:

我有一个 HiddenFor 字段缺少它的值标签。这是一个使用 razor 视图引擎的 MVC4 项目。

<input name="Id" id="teamId" type="hidden" data-val-required="The Id field is required." data-val-number="The field Id must be a number." data-val="true"/>

生成自:

@Html.HiddenFor(m => m.Id, new { id = "teamId" })

来自我的模型(使用 System.ComponentModel.DataAnnotations):

public class TeamModel
{
    public int Id { get; set; }
    [Required(ErrorMessage = "Please enter a team name"), MaxLength(25)]
    public string Name { get; set; }
}

在将新模型传递给表单时,我什至尝试手动设置 Id 字段,如下所示:

return PartialView("EditTeam", new TeamModel{Id = 5});

然而,这仍然不显示值。奇怪的是它通过了客户端验证但没有通过服务器端验证。我在另一个项目中有类似的设置,效果很好。我看不出它们之间有什么区别。有什么明显的我错过了吗?谢谢:)

编辑: 如果我使用:

@Html.Hidden("test", Model.Id)

它有效。 HiddenFor 的某些东西将值设置为空白(看到原始 HTML,值字段在那里但只是设置为:value="")

编辑: 为了完整起见,这里是控制器(也是问题的根源):

public ActionResult GetTeam(int? id)
{
    return PartialView("EditTeam", id.HasValue ? _teamLogic.GetById(id.Value) : new TeamModel());
}

【问题讨论】:

    标签: asp.net-mvc razor


    【解决方案1】:

    你试过了吗:

    @Html.HiddenFor(m => m.Id, new { id = "teamId", value=Model.Id })
    

    【讨论】:

    • 这似乎应该有效,但它没有。值仍然以空/空白的形式出现。
    • 这很奇怪,我刚刚在我自己的代码中进行了测试,它正在工作:S
    • 是的,很抱歉我在最初的问题中错过了控制器。我会更新问题并将我的答案标记为已完成
    【解决方案2】:

    为什么需要第二个参数?

    @Html.HiddenFor(m => m.Id, new { id = "teamId" })
    

    如果你从控制器正确返回你的模型,这就足够了:

    @Html.HiddenFor(m => m.Id)
    

    【讨论】:

    • 我添加它只是为了在调试时更容易识别它。有无都一样。
    • 也许这个有类似问题的对话对你有帮助stackoverflow.com/questions/6850174/…
    • 对我来说@Html.HiddenFor(m =&gt; m.Id) 不起作用。 如何正确返回模型
    【解决方案3】:

    我将在这里回答我自己的问题,因为我已经设法解决了这个问题。 我应该将此代码添加到问题中(这是被调用以使用表单加载模式的控制器):

    public ActionResult GetTeam(int? id)
    {
        return PartialView("EditTeam", id.HasValue ? _teamLogic.GetById(id.Value) : new TeamModel());
    }
    

    问题在于传入的参数是“id”。当更改为“teamId”时,它起作用了。我猜 MVC 试图变得聪明,并将其标识为模态框上的键值,因此在调用 new 时,将其设置为空白。

    【讨论】:

      猜你喜欢
      • 2019-06-19
      • 1970-01-01
      • 2016-08-16
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多