Эта статья о том, как вы можете вызывать свой код за файловой функцией, т.е. написанной на стороне сервера функцией из кода на стороне клиента, т.е. используя 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, которая, в свою очередь, вызывает функцию сервера и сообщает, что введенное значение является уникальным или нет.
