gpt4 book ai didi

c# - 无法弄清楚为什么 MVC View 没有将值传递给 Firefox 浏览器中的操作

转载 作者:行者123 更新时间:2023-11-30 12:09:38 25 4
gpt4 key购买 nike

Controller 中的 Action :

public JsonResult ChangeGrowerTrainingDate(long growerId)
{
//Do something
}

查看:

@using (Ajax.BeginForm("ChangeGrowerTrainingDate", "Grower", null, new AjaxOptions { OnSuccess = "TrainingDateChanged" }, new {@class=applicant.Id }))
{
Html.Hidden("growerId", applicant.Id)
//More stuff
}

我不明白为什么“growerId”没有从 View 传递到 Controller 中的操作,问题只发生在 Firefox 中,在所有其他浏览器中一切正常。甚至可以在 IE 中使用。

最佳答案

好吧,我明白了,因为 html 没有通过正确的语法验证,firefox 在隐藏输入之前关闭了表单标签。这是我所拥有的以及导致问题的原因:

@using(Html.BeginForm(......)) 
{
<tr><td>@Html.Hidden("growerId", aplicant.Id)</td></tr>
}

FireFox 将其呈现为:

 <form action="" method="post"></form>
<tr><td><input type="hidden" name="growerId" /></td></tr>

正如我们所见,FireFox 在呈现 HTML 时一打开它就关闭了表单标签,而我的隐藏输入在表单之外,这就是为什么没有任何内容被提交到 Controller 中的操作。

我通过将我的表单移到 TD 标签中来修复它:

<tr><td>
@using(Html.BeginForm(......))
{
@Html.Hidden("growerId", aplicant.Id)
}
</td></tr>

这解决了问题。

关于c# - 无法弄清楚为什么 MVC View 没有将值传递给 Firefox 浏览器中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com