【问题标题】:Call an action from View without changing Page从视图调用操作而不更改页面
【发布时间】:2020-09-24 00:50:28
【问题描述】:

我正在使用 ASP .NET CORE 3。

我正在尝试使用 ajax 从视图中调用操作,但我的所有尝试都会导致 404 错误。 这是我的代码:

我的控制器中的动作

[HttpGet]
    public static async Task<int> RunSelenium(string idCampagne)
    {
        SeleniumDriver seleniumInstance = new SeleniumDriver();
        Campagnes campagne = mongo.GetCampaign(idCampagne);
        seleniumInstance.startBrowser();
        seleniumInstance.Connection(campagne.user);
        //campagne.RunTask(campagne);
        return 1;
    }

以及带有 ajax 代码的视图

$(".LaunchSelenium").on("click", function () {
    LaunchSelenium(this.id);
});



  function LaunchSelenium(id) {
      $.ajax({
          type: "GET",
          url: '@Url.Action("RunSelenium", "Home")' + "?id=" + id,
          async: true,
      });
  }

感谢您的阅读!

【问题讨论】:

  • 您正在从 ajax 传递一个名为 id 的参数,但您的控制器需要 idCampagne 参数

标签: .net ajax asp.net-mvc


【解决方案1】:

如果您希望通过 Ajax 调用 ASP.NET MVC 控制器方法,则该方法不应像在 Web 窗体中那样是静态的。从控制器方法中删除静态并更改您从 ajax 发送的参数名称。

[HttpGet]
public async Task<int> RunSelenium(string idCampagne)
{
    SeleniumDriver seleniumInstance = new SeleniumDriver();
    Campagnes campagne = mongo.GetCampaign(idCampagne);
    seleniumInstance.startBrowser();
    seleniumInstance.Connection(campagne.user);
    //campagne.RunTask(campagne);
    return 1;
}

还有 javascript

$(".LaunchSelenium").on("click", function () {
    LaunchSelenium(this.id);
});

function LaunchSelenium(id) {
  $.ajax({
      type: "GET",
      url: '@Url.Action("RunSelenium", "Home")' + "?idCampagne=" + id,
      async: true,
  });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    相关资源
    最近更新 更多