ASP.NET Web窗体[WebMethod]未被AJAX Post调用

问题描述

我正在使用bootstrap / jquery 3.4.1 js处理ASP.NET Web窗体项目。我遇到了使AJAX Post正常工作的问题。应该在Schedule.aspx中点击我的[WebMethod],但事实并非如此。我已经在其上设置了一个断点,并且在单击保存按钮时从未激活过该断点。 AJAX成功并弹出警告,并且我已经验证了字符串化数据正在按预期输出,但是为什么它没有达到[WebMethod]?

这是我的JavaScript函数

$(document).on('click','#modalSave',function (e) {
     
    var testValue = "TestValue";

    $.ajax({
        type: "POST",url: "Schedule.aspx/InsertItem",data: JSON.stringify({ Content: testValue }),contentType: "application/json; charset=utf-8",dataType: "json",success: function ()
        {
            alert("AJAX success");
            $('#DetailsModal').modal('hide');
        }
    })
});

我的[WebMethod]

using System.Web.Services;

namespace Scheduler
{
    public partial class Schedule : Page
    {
        [WebMethod]
        public static string InsertItem(string Content)
        {
            return Content;
        }
    }
}

我的模式和保存按钮:

<div id="DetailsModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;  </button>
                <h4 class="modal-title" id="myModalLabel">Modal title</h4>
            </div>
            <div class="modal-body">
                <textarea id="modalTextArea" style="width: 100%; height: 300px;"></textarea>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <button id="modalSave" type="button" class="btn btn-primary">Save changes</button>
            </div>
        </div>
    </div>
</div>

解决方法

我已经模拟了您的代码,并且可以成功输入WebMethod的断点,一个可能的原因是您未在 Visual Studio IDE中激活调试模式

enter image description here

enter image description here

更新2:

使用RouteConfig配置启用对WebMethod的调用:

public static class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        var settings = new FriendlyUrlSettings();
        settings.AutoRedirectMode = RedirectMode.Off;
        routes.EnableFriendlyUrls(settings);
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...