Я прошел через бесчисленные сообщения и не могу понять, что я делаю неправильно. У меня есть asp. net веб-сайт с кодом C#. В нем мне нужна функция javascript на странице .aspx для вызова метода на странице aspx.cs. Я написал следующий код:
.aspx page (мой ScriptManager):
</head>
<body id="bodycontainer">
<asp:ScriptManager ID="ScriptManager2" runat="server" EnablePartialRendering="false" EnablePageMethods="true"/>
Функция Javascript с использованием ajax на странице .aspx:
function ValidateForm() {
$.ajax({
type: "POST",
url: "default.aspx/Save",
data: {},
contentType: "application/json; charset=utf=8",
// dataType: "json", // NOT NEEDED IF NO RETURN VALUE
async: true, // OPTIONAL
success: function (msg) {
alert("success");
},
error: function (msg) {
alert("failed");
}
});
}
Страница aspx.cs (страница Code Behind):
[WebMethod]
public static void Save()
{
// throw new DivideByZeroException(); // USED THIS TO VERIFY IF WEBMETHOD IS HIT.
_default obj = new _default();
obj.Show("Save Method Works"); // THIS IS A POPUP MESSAGE BOX
obj.btnSave_Click(); // THIS IS THE SAVE METHOD ON THIS PAGE THAT WE WANT TO RUN
}
public void btnSave_Click()
{
// METHODS CODE HERE
}
Функция ValidateForm отвечает «success», однако, похоже, что она даже не запускает WebMethod в Code Behind стр. Если я использую вкладку сети Консоли IE, я вижу запрос POST. Тем не менее, в методе code code он никогда не вызывает точки останова при отладке (не уверен, следует ли это делать согласно некоторым сообщениям). В какой-то момент я вставил строку, чтобы выдать исключение DivideByZero, и оно никогда не вызывало исключение.
Итак, чтобы подвести итог, я получаю подтверждение, что он Javascript вызов WEBMETHOD работал в силу сообщения об успехе и Сообщение POST на вкладке «Сеть консоли F12». Однако, похоже, что ВЕБ-МЕТОД никогда не срабатывает. Любая помощь будет оценена!