【问题标题】:Ajax.BeginForm says action doesn’t exists, however it doesAjax.BeginForm 说动作不存在,但它确实存在
【发布时间】:2011-09-30 11:16:01
【问题描述】:

我在我的一个应用程序中使用 AJAX Helper 方法,一切都很好而且正确,但突然遇到了这个奇怪的问题,即在视图中

    <% using (Ajax.BeginForm("Feedback", "User", new AjaxOptions { InsertionMode = InsertionMode.InsertBefore, HttpMethod = "POST", OnFailure = "searchFailed", OnSuccess = "feedbackRecorded", LoadingElementId = "ajax-loader-fb", UpdateTargetId = "newsletter", }, new { @id = "feedback" })) { %>

Ajax.BeginForm 的第一个参数即 {action name} 现在被标记为红色(我正在使用 Resharper)并表示“无法解析操作 'ActionName'”,但是该操作存在于我的控制器中.

另一个奇怪的事情是,在运行应用程序并提交表单时,它最终会调用 Javscript 的“OnSuccess”方法,就好像它已经成功一样,但实际上什么也没发生,它甚至没有到达指定的第一行调用控制器动作。(视图中的两个 AJAX 表单都会发生这种情况)

有没有人知道它突然出现这种行为的可能原因?

谢谢!

我刚刚创建了一个新的“SharedController”控制器,其中包含相同的操作,现在它正在识别,但在 UserController 中无法识别?

      public class SharedController : Controller
    {
            public ActionResult Feedback()
            {
                    throw new NotImplementedException();
            }
    }

【问题讨论】:

  • 由于显示代码的简洁性,我只能猜测您可能在表单内有一个表单。
  • 我在激活我的 resharper 后遇到了同样的问题,但我的操作确实有效.. 只是看着很烦人。

标签: c# asp.net-mvc ajax resharper


【解决方案1】:

Maven,关于 ReSharper - 它的抱怨是对的,因为您使用此方法重载

public static MvcForm BeginForm(
    this AjaxHelper ajaxHelper,
    string actionName,
    Object routeValues,
    AjaxOptions ajaxOptions,
    Object htmlAttributes)

其中第二个参数是 routeValues,因此 ReSharper 在当前控制器中查找操作“Feeeback”。

显然,您希望通过此调用再次重载

<% using (Ajax.BeginForm("Feedback", "User", null, new AjaxOptions { InsertionMode =  InsertionMode.InsertBefore, HttpMethod = "POST", OnFailure = "searchFailed", OnSuccess = "feedbackRecorded", LoadingElementId = "ajax-loader-fb", UpdateTargetId = "newsletter", }, new { @id = "feedback" })) { %>

注意第三个 null 参数。

【讨论】:

  • 谢谢你,这让我发疯了!我也“没有看到”第三个论点。哇!
【解决方案2】:

Ajax.BeginForm的第二个参数是控制器名称。

尝试将代码更改为:

<% using (Ajax.BeginForm("Feedback", "Shared", ...

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2018-08-02
    • 2017-05-26
    相关资源
    最近更新 更多