【问题标题】:Hidden input has a value but it's always null in controller action隐藏的输入有一个值,但在控制器操作中它始终为空
【发布时间】:2017-10-16 06:40:22
【问题描述】:

正在开发 mvc5 应用程序。在我的 ajax 表单中,我有很多字段,包括一个隐藏的输入...

 <input id="currentView" name="currentView" 
      value="calendar" type="hidden" />

每当我发布到我的操作时,currentView 都是空的,除非我将类型更改为“文本”。然后我得到了很好的价值。

动作的开始被定义为...

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult GetEvents(string userName, string currentView, 
           string theStatus)
    {

其他参数在模型中并且很好。这是问题吗? currentView 是否必须在模型中才能使隐藏字段起作用?我想我只是对为什么当我将类型更改为文本时它起作用感到困惑。我的理解是,只要我定义了一个名称,就可以在请求变量中访问它。

谢谢!

**** 更新:这是我的 Ajax 表单的顶部 *****

     @using (Ajax.BeginForm(
         new AjaxOptions
          {
              HttpMethod = "POST",
              Url = "/Scheduler/GetEvents",
              UpdateTargetId = "mainTable"
           }))
           {
              @Html.AntiForgeryToken()
              @Html.ValidationSummary(true)
              <input id="currentView" name="currentView" 
                   value="calendar" type="text" 
                   style="display: none;" />

如您所见,我使用 display: none 破解了它。当我将类型更改为“隐藏”时,它不起作用。

【问题讨论】:

  • 你在做什么对我来说似乎没问题。 ModelBinder 使用 name 属性来绑定数据,所以你的理解是对的。你使用 Ajax.BeginForm 对吗?
  • 一切看起来都很好。你能给我们更多的细节,比如整个 Html 吗?
  • @User3250 是的。我在上面更新了它。谢谢
  • 是的,没有问题,currentView 不需要在模型中才能使隐藏字段工作。所以为了调试你的问题,如果你提供完整的 html 代码,那么它将对我们有所帮助。
  • @KarthikElumalai 谢谢。我的客户不希望我这样做。而且,cshtml非常广泛,涉及部分视图等......所以,我不能完整地发布它。但是,令人困惑的是,我更改了类型,它要么工作要么不工作。嗯.... :-(

标签: c# asp.net-mvc


【解决方案1】:

您可以尝试在这样的路由值中发送它,而不是使用隐藏字段发送值

@using (Ajax.BeginForm("GetEvents", "Scheduler", new { currentView ="calander"},
                                        new AjaxOptions
                                        {
                                             HttpMethod = "POST",
                                             UpdateTargetId = "mainTable"
                                        }))
{

【讨论】:

  • 感谢您提供的替代方法。我仍然对隐藏字段不起作用的原因感到困惑。谢谢!
  • @WebDevGuy2 尝试更改字段的名称和 ID
  • @WebDevGuy2 你也可以试试@Html.Hidden("currentView", "calander")
猜你喜欢
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多