【问题标题】:Html.BeginForm Doesn't seem to want to post back to the controllerHtml.BeginForm 似乎不想回发到控制器
【发布时间】:2016-08-30 22:25:59
【问题描述】:

我的 MVC 剃须刀表单不会回传到我的控制器。我在 BeginForm 方法中尝试了各种参数组合,但均无济于事。

查看代码

@using (Html.BeginForm("UpdateSurveyData", "Site"))
{
  ...
  <input type="submit" class="btn btn-default" value="Submit" />
}

站点控制器方法

public ActionResult UpdateSurveyData()
{
   // Code Never Reaches this point
   ...
}

渲染出来的html是这样的

<form action="/Site/UpdateSurveyData" method="post"></form>

我应该提到我正在尝试在 kendoUI 模式窗口中呈现此表单,如果我使用 &lt;form&gt;&lt;/form&gt; 而不使用 Html 帮助程序,它会按预期工作。

【问题讨论】:

  • 所以它没有呈现提交按钮?如果是,当您提交时发生了什么?您是否有任何 js 代码拦截按钮单击事件并阻止默认行为?
  • 您显示的方法是否标有[HttpPost](以及为什么它返回JsonResult
  • 如果有效,还可以在控制器名称后添加 FormMethod.Post。
  • 我看起来提交按钮在表单元素之外
  • 我确实在某个方法上尝试过 [HttpPost]。好像没什么效果。

标签: c# asp.net-mvc razor html.beginform


【解决方案1】:

我在使用 (Html.BeginForm) 方法方面取得了成功和失败;由于我不知道的原因,我遇到了同样的问题。真正的原因是表单对象在其他控件的呈现之前过早地处理(在处理时,结束表单标记呈现)。因此,为什么即使您的代码可能是正确的,它的行为也可能不如预期。仍然没有弄清楚为什么处置会提前发生。

如果您使用任何 kendo 控件(MVC 包装器),我不知道框架内是否存在可能影响渲染过程的东西,但我个人遇到的问题只是核心框架。

【讨论】:

  • 谢谢布赖恩,这帮助我解决了这个问题。我最终放弃了 Html.BeginForm 帮助程序,而是使用了原始
    元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 2018-05-19
  • 2015-11-01
  • 1970-01-01
相关资源
最近更新 更多