【问题标题】:ASP.NET MVC - JQuery call from url without action not workingASP.NET MVC - 来自 url 的 JQuery 调用没有操作不起作用
【发布时间】:2021-05-21 10:08:28
【问题描述】:

我有一个 http://localhost:54393/CreateTest/4fwp36 工作正常,但是当我从 jQuery ajax 调用 http://localhost:54393/CreateTest/RemoveControlsNew 时它不起作用,给出错误也没有调用控制器,如果有人可以帮助我,因为我被困在这里超过 1 天

我试过了,但它不起作用:

MVC JQuery call from url without action

这是我的路线配置:

routes.MapRoute(
           name: "CreateTest",
           url: "CreateTest/{id}",
           defaults: new { controller = "CreateTest", action = "Index", id = UrlParameter.Optional }
       );

当我从另一个控制器调用时,上面的代码完美运行:

return Redirect("/CreateTest/"+ strTestID);

当我尝试使用 ajax post 方法调用同一个控制器时

RemoveControls: function (rid) {
    var MyAppUrlSettings = {
        MyUsefulUrl: "/CreateTest/RemoveControlsNew"
    }
    $.ajax({
        type: 'POST',
        dataType: "JSON",
        async: false,
        //url: '@Url.Action("RemoveControlsNew",Request.Url.Scheme)',
        url: MyAppUrlSettings.MyUsefulUrl,
        contentType: 'application/json; charset=utf-8',
        data: {
            rid: rid,
            bgcolor: CREATETEST.globalbgcolor,
            fontcolor: CREATETEST.globalfontcolor,
            fontsize: CREATETEST.globalfontsize
        },
        success:
            function (response) {
                var data = response;
                if (data == 'Error') {
                    CREATETEST.showerror('Some thing went wrong you cannot remove a question at the moment for selected option');
                }
                else {
                    $("#AddControlNew").load(location.href + " #AddControlNew");                       
                }
            },
        error:                
            function (response) {
                console.log(response);
                CREATETEST.showerror("Error: " + response);
            }
    });
},

然后这些不起作用,我的方法没有被调用。

我收到此错误:

Error on page

Controller code for Ajax call Regular Controller code

【问题讨论】:

  • 请发布您的 ajax 和控制器代码
  • 下面是我的路由配置 routes.MapRoute( name: "CreateTest", url: "CreateTest/{id}", defaults: new { controller = "CreateTest", action = "Index", id = UrlParameter. 可选 } );当我从另一个控制器调用它时效果很好,但是当我从外部 js 调用它以在同一个控制器上以不同的操作调用 ajax 时它不起作用我的 js 在 url 下方:“/CreateTest/RemoveControlsNew”
  • 能否请您添加控制器操作(索引)
  • 已添加请查看以上网址

标签: c# jquery ajax asp.net-mvc asp.net-mvc-5


【解决方案1】:

您的“页面错误”图片没有显示任何有用的信息,您是否收到了 404202405 标题状态代码

请发布代码,而不是图片。

[FromBody] 属性应用于参数以从HTTP 请求的正文填充其属性。 ASP.NET Core 运行时将读取正文的责任委托给输入格式化程序。

public JsonResult RemoveControlsNew([FromBody] int rid, string bgcolor, string fontcolor, string fontsize)

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多