隐藏输入有一个值,但在控制器操作中它总是为空

时间:2017-05-17 01:28:38

标签: c# asp.net-mvc

使用mvc5应用。在我的ajax形式中,我有很多字段,包括一个隐藏的输入......

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

每当我发布到我的动作时,currentView为null,除非我将类型更改为“text”。然后我得到的价值很好。

行动的开头定义为......

    [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来攻击它。当我将类型更改为“隐藏”时,它不起作用。

1 个答案:

答案 0 :(得分:0)

而不是使用隐藏字段发送值,您可以尝试以路径值发送它,如此

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