【问题标题】:call controller action method from javascript in view [closed]从视图中的javascript调用控制器操作方法[关闭]
【发布时间】:2020-09-30 14:23:23
【问题描述】:

我必须从局部视图添加按钮调用控制器方法 NewIndividualSearchCharacteristic。 但是使用这段代码,我得到了 404 错误。请帮助我,因为我是 .net core mvc 的新手。

局部视图中的按钮

<button id="add-characteristics" onclick="add()" type="button" class="btn btn-success">Add Characteristics</button>

Test.cshtml

function add(){
          var action = ' @Url.Action("NewIndividualSearchCharacteristic", "Blended")';
          window.location.href = action;
          $.post(url)
           .done(function (partialView) {
                  ('#Characteristics').append(partialView);
              });
 }

控制器

 [HttpPost]
        public ActionResult NewIndividualSearchCharacteristic(Characteristic Characteristic)
        {
            return PartialView("IndividualSearchCharacterisiticPartial", Characteristic ?? new Characteristic());
        }

【问题讨论】:

  • 几个问题,window.location.href 将重定向。您的操作被标记为 POST,这导致了 404。

标签: c# asp.net asp.net-core-mvc


【解决方案1】:

您正尝试将用户重定向到作为新页面的操作并且尝试调用 AJAX 请求。它应该是其中之一。

如果你想这样做:

window.location.href = action;

然后你重定向用户,这是一个 GET 请求。所以从操作方法中删除[HttpPost]。 (并从 JavaScript 代码中删除 AJAX 调用,因为您不再需要它了。)

另一方面,如果你想这样做:

$.post(url)
    .done(function (partialView) {
        ('#Characteristics').append(partialView);
    });

然后从你的 JavaScript 中删除这一行:

window.location.href = action;

似乎后一种 (AJAX) 操作是您想要的,但这取决于您。


编辑:你也忘了在这里调用 jQuery 函数:

('#Characteristics').append(partialView);

应该是:

$('#Characteristics').append(partialView);

【讨论】:

  • 我删除了 window.location.href = action;但它不会返回我的部分视图。
  • @Upkar:调试时,具体会发生什么?打开浏览器的调试工具并观察。浏览器的开发控制台上是否有任何错误?在网络选项卡中,是否发出了 AJAX 请求?服务器的响应是什么?
  • 是的,我收到 500 个内部服务器错误。
  • @Upkar:那么您需要调试该错误。响应正文中是否返回了任何有用的错误信息?如果没有,您能否更新 .NET 应用程序的配置以返回开发中的错误信息?服务端代码调试时,是否有异常抛出/捕获?
  • @Upkar:你有一个错字。我也更新了答案以纠正这个问题。您忘记使用 $ 调用 jQuery 函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多