【问题标题】:MVC Partial View Not Submitting Hidden Field ValeMVC 部分视图未提交隐藏字段值
【发布时间】:2014-05-20 09:21:56
【问题描述】:

我正在开发一个 MVC 5 Web 应用程序。其中一个视图引用了部分视图,如下所示

<div class="row">
    <div class="panel-body" id="TimeEntryPartial">
       @Html.Partial("_TimeEntryPartial", Model.TimeEntry)
    </div>
</div>

Partial View 然后显示一个包含多个字段的表单,其中一个是隐藏字段,就像这样

@using (Html.BeginForm("AddTimeEntry", "TimeEntry", FormMethod.Post, new { name = "frm", id = "frm" }))
{

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

<div id="AddButtons">
    <div class="col-sm-12">
        <input type="submit" id="btnAdd" name="btnAdd" class="btn btn-warning btn-block" value="Add Entry">
    </div>
</div>

}

当用户提交表单时,会在 Controller 中调用 HttpPost Action,就像这样

[HttpPost]
public ActionResult AddTimeEntry(TimeEntryViewModel model)
{
    if(ModelState.IsValid)
    {
        //code here
        int userID = model.SelectedUserID;
    }
}

除了 SelectedUserID 之外,表单中的所有值都在 ViewModel 中成功传递。这始终是 0。

我认为这可能与隐藏字段有关,因此我将其更改为文本框,我可以看到其中的值。但是,再次调用 HttpPost 操作时,属性 SelectedUserID 的值不包含在 ViewModel 中。

有人对如何解决这个问题有任何建议吗?

感谢您的帮助。

【问题讨论】:

  • 如果你得到一个 0,那是因为这是隐藏的值,否则如果模型绑定器中的字段识别有任何问题,你应该收到 null。
  • @Bardo 对不起,你错了。正如我的问题中所述,我还用文本框替换了隐藏字段,并且在用户提交表单之前我可以看到其中包含的正确值。但在 Http Post Action 中检索时值仍然为 0。
  • 代码对我来说看起来不错,我想我们可能需要看一些额外的脚手架。主视图中还存在什么?浏览器看到了什么?发给服务器的帖子是否包含正确的详细信息(请咨询 Fiddler)?
  • 您能展示一下TimeEntryTimeEntryViewModel 的型号吗?您的 partialView 使用的是哪个模型?
  • 能否对这个问题投反对票,请解释原因?对结构如此完善的问题投反对票似乎很荒谬。

标签: asp.net-mvc asp.net-mvc-5 hidden-field asp.net-mvc-partialview


【解决方案1】:

检查你的 poco。如果字段未正确设置为属性,则自动连接将忽略它。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我已经通过摆脱部分视图来解决它。

    一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多