Я пытаюсь получить доступ к методу на стороне сервера со стороны клиента (это просто вызов метода сервера из javascript). Я использую .NET 4.0 Visual Studio 2010 Ultimate. Я создаю веб-элемент управления (ascx). У меня есть страница ascx (элемент управления html) и страница ascx.cs: ascx следующий:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="BoxButton.ascx.cs" Inherits="ATB.Controls._BoxButton" %>
<asp:ScriptManager ID="SM_ScriptManager" runat="server" EnablePageMethods="true" />
<script type="text/javascript">
function handle() {
PageMethods.manageHandler();
}
</script>
<span id="BoxButton_HtmlSpan" runat="server" onclick="handle();" style="background-color:#efefef;border-style:solid;border-width:1px;border-color:#cccccc;height:25px;text-align:center;padding:3px 3px 3px 3px;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;color:#333333;line-height:15px">
<asp:Label runat="server" Text="Button" id="Text_Label"></asp:Label>
</span>
А вот файл ascx.cs (просто распечатываю функцию):
[System.Web.Services.WebMethod]
public static string manageHandler() {
int i = 0;
System.Console.WriteLine("Ciao");
return "Hello";
}
Что ж, как вы можете видеть, я пытаюсь решить свою проблему с помощью методов страницы, что ж, это не работает, и я всегда getPageMethods не определен диспетчером времени выполнения JScript. Что ж, возможно ли, что PageMethods недоступны в .net 4.0?
В любом случае, есть ли другой подход к решению проблемы, связанной с вызовом метода на стороне сервера из скриптов на стороне клиента? Я понял, что pagemethods - это не что иное, как веб-сервис, и это немного беспокоит меня, когда я думаю о безопасности в моем веб-приложении.
РЕДАКТИРОВАТЬ:
Что ж, похоже, что jQuery - допустимое решение ... но может ли он позволить мне вызвать метод на стороне сервера? Я так и ожидал, потому что мы говорим об ajax, верно?
ИЗМЕНИТЬ 2:
Ах ... Другой вопрос ... Я попытался использовать веб-метод, но он не работает, и я получаю ошибки, не находя PageMethods в javascript, в то время как я устанавливаю диспетчер сценариев и атрибут метода WebMethod, как указано ...
Это потому что я работаю внутри ascx ?????? возможный????? Тогда даже jQuery не поможет ....