Эта статья о том, как вы можете вызывать свой код за файловой функцией, т.е. написанной на стороне сервера функцией из кода на стороне клиента, т.е. используя jQuery.
Недавно в моем проекте появилось требование, чтобы я проверял, что ApplicationCode, т.е. значение, введенное пользователем, уже доступно в базе данных, или нет, то есть уникальное значение.
Вывод будет выглядеть, как показано ниже, если запись существует, она показывает ошибку «Запись существует», в противном случае она не отображает никаких записей.
Теперь в следующем посте я собираюсь обсудить, что является необходимым условием и зачем его использовать.
Код сервера
Ниже метод вызывается из скрипта на стороне клиента, как вы можете видеть, что есть некоторые изменения в атрибуте метода, объявлении и определении, которые я собираюсь обсудить
[WebMethod] [WebMethod] public static string IsExists(string value) { //code to check uniqe value call to database to check this return "True"; }
Атрибут WebMethod
Прикрепленный атрибут WebMethod с методом Public указывает, что метод представлен как часть веб-службы XML. Атрибут сообщает .NET, что определенный публичный метод представлен как веб-вызываемый метод. Чтобы использовать этот атрибут, вам нужно использовать
System.Web.Services. Об этом атрибуте можно прочитать по адресу:
WebMethodAttribute Class
Статический метод
Статический метод не связан с экземпляром класса, который вызывается с использованием только classname.methodname ( ) т.е. нет необходимости создавать экземпляр.
Вот почему я отметил метод как статический. Он не может взаимодействовать со свойствами и методами экземпляра вашего класса Page, поскольку вызов метода страницы не создает ни экземпляра страницы, ни какого-либо из ее элементов управления. Методы страницы примерно эквивалентны сокращению для автономных веб-сервисов.
Файл .CS
using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Services;//needed for the webmethod attribute public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) txtData.Attributes.Add("onblur", "focuslost()"); } [WebMethod] public static string IsExists(string value) { return "True"; } }
В приведенном выше коде я зарегистрировал клиентское событие с помощью
onblur и прикрепленной функции
focuslost .
Код клиента в коде страницы .ASPX Вызов jQuery .ajax () Для вызова метода из кода на стороне клиента я использовал функцию jQuery под названием ajax, чтобы получить более подробную информацию об этой функции, которую вы можете прочитать о моем блоге: Jquery
Ajax Вызов функции
function IsExists(pagePath, dataString, textboxid, errorlableid) { $.ajax({ type:"POST", url: pagePath, data: dataString, contentType:"application/json; charset=utf-8", dataType:"json", error: function(XMLHttpRequest, textStatus, errorThrown) { $(errorlableid).show(); $(errorlableid).html("Error"); }, success: function(result) { var flg = true; if (result != null) { flg = result.d; if (flg == "True") { $(errorlableid).show(); } else { $(errorlableid).hide(); } } } }); }
В клиентском скрипте:
поскольку я должен проверить, существует ли код или нет, я прикрепил событие focusout () к своему элементу управления textbox, поэтому, когда фокус теряется, он вызывает ajax-вызов события TextChanged кода, стоящего за файлом.
url — содержит путь к странице, которая вызывается из кода на стороне клиента, т.е. из страницы aspx.
data — данные, отправляемые на сервер с клиента, это в основном строка json.
contentType — Тип содержимого, отправляемый на сервер.
dataType — ожидаемый формат данных из-за
ошибки сервера.
Вызывается, когда вызов метода сервера не
удался— Вызывается, когда вызов к методу сервера успешен, и возвращаемые данные из вызванного метода могут быть обработаны в этом методе.
Код страницы ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Async="true" Inherits="_Default" %> Record exsits
Как и в приведенном выше коде,
функция focuslost вызывает функцию
IsExists, которая, в свою очередь, вызывает функцию сервера и сообщает, что введенное значение является уникальным или нет.