从Javascript ASP.NET调用[HTTPPost]

从Javascript ASP.NET调用[HTTPPost],javascript,asp.net,http-post,Javascript,Asp.net,Http Post,我在我的控制器中使用了一种从API导入数据的方法。我希望从两个位置调用此方法。首先是视图(当前正在工作),其次是javascript函数 控制器方法的开始: [ActionName("ImportRosters")] [HttpPost] public ActionResult PerformImportRosterData(int id, int? actualLength, int? rosterLength) { var authenticator

我在我的控制器中使用了一种从API导入数据的方法。我希望从两个位置调用此方法。首先是视图(当前正在工作),其次是javascript函数

控制器方法的开始:

[ActionName("ImportRosters")]
    [HttpPost]
    public ActionResult PerformImportRosterData(int id, int? actualLength, int? rosterLength)
    {
        var authenticator = Authenticator(id);
        var rosters = authenticator.Api().RosterData().ToDictionary(x => x.Id);

        var databaseRosterDatas = SiteDatabase.DeputyRosterData.Where(x => x.SiteID == id)
            .ToDictionary(x => x.Id);
Javascript函数:

$("#btnDeputyRunNowUpdate").click(function() {
    $("#btnRunDeputyNow").modal("hide");
    ActualLength = $("#actualRunLength").val();
    RosterLength = $("#rosterRunLength").val();
    $.ajax({
        type: "POST",
        url: "/deputy/PerformImportRosterData",
        data: { SiteIDRoster, ActualLength, RosterLength }
    });
    SiteIDRoster = null;
    location.reload();
    $("#btnRunDeputyNow").modal("hide");
    toast.show("Import Successful", 3000);
});
正在设置所有值,但url行上出现404错误 404号职位()


我需要一种能够从html和JS调用此c#方法的方法

如果您要在AJAX中修改URL,可以这样做。它应该看起来像

url: '<%= Url.Action("YourActionName", "YourControllerName") %>'
还有一件事,我不知道你对电话结果做了什么。您的脚本没有成功部分

 success: function(data) {//do something with the return}
在您的呼叫中加入错误处理程序将非常有帮助。 关于AJAX外观的完整示例:

$.ajax({
  url: "target.aspx",
  type: "GET",
  dataType: "html",
  success: function (data, status, jqXHR) {
   $("#container").html(data);
    alert("Local success callback.");
   },
   error: function (jqXHR, status, err) {
     alert("Local error callback.");
  },
  complete: function (jqXHR, status) {
     alert("Local completion callback.");
  }
})
有关AJAX的良好教程,请阅读

评论后的更改: 我目前的代码如下:

$("#btnDeputyRunNowUpdate").click(function() {
    $("#btnRunDeputyNow").modal("hide");
    ActualLength = $("#actualRunLength").val();
    RosterLength = $("#rosterRunLength").val();
    $.ajax({
        type: "POST",
        url: '<%= Url.Action("PerformImportRosterData", "DeputyController") %>',
        data: { SiteIDRoster, ActualLength, RosterLength },

        success: function(data) {
            console.log(data);
            console.log("TESTHERE");

        }
    });
}
记住在javascript中设置所有变量值,如果它们没有值,请将它们设置为null

能否尝试复制下面的粘贴代码

$.ajax({
    type: "POST",
    url: "/deputy/PerformImportRosterData",
    data: { SiteIDRoster:999, ActualLength:1, RosterLength:2 }
});

如果它会导致任何错误,请告诉我。

在尝试解决了几天后,我创建了一个解决方案,创建了两种导入数据的方法。一个用于httpPost,另一个用于从javascript导入调用


这不是一个很好的解决方案,但它很有效。谢谢你的帮助,尤里

谢谢你的帮助。我第一次尝试你的第一个url更改,它给出了这个错误接下来我尝试了你的第二个更改,并给出了这个错误我的原始示例已被改编以显示更改。你可以以其他方式提供图像和示例吗。我没有安装Inger。只要简单的截图上传到这个网站就可以了。您是否修改了代码以获得成功和错误?我添加了成功和错误。Imgur是一个保存照片的网站,不需要安装,我也不能将图片上传到评论中。我已编辑了原始问题,但正在等待“同行评审”。但在理论上,你给出的第一个例子是关于经验装饰师的一个错误。第二个在控制台中出现400()错误javascript所在页面的扩展名是什么?您好。对不起,我不明白这个问题。我已经检查了所有的值,并确保它们不为空。url:“@url.Action(“/PerformImportRosterData”,“代理”)”仍将作为404错误返回。我从一个js文件调用这个方法,该文件正在与一个名为deputyController的控制器(但已尝试在url as中使用代理)对话,以获得一个名为PerformImportRosterData的方法。希望这有帮助
    url: "/deputy/PerformImportRosterData",
    data: { id: yourIDValue,  actualLength: youractualLengthValue,  
            rosterLength :yourrosterLengthValue }
$.ajax({
    type: "POST",
    url: "/deputy/PerformImportRosterData",
    data: { SiteIDRoster:999, ActualLength:1, RosterLength:2 }
});