使用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来攻击它。当我将类型更改为“隐藏”时,它不起作用。
答案 0 :(得分:0)
而不是使用隐藏字段发送值,您可以尝试以路径值发送它,如此
@using (Ajax.BeginForm("GetEvents", "Scheduler", new { currentView ="calander"},
new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "mainTable"
}))
{