Привет, у меня есть подпрограмма под названием CheckDate() в коде.вызывать подпрограмму vb.net из функции javascript?
Как я могу назвать эту подпрограмму функцией javascript?
Приветствия,
-Jonesy
Привет, у меня есть подпрограмма под названием CheckDate() в коде.вызывать подпрограмму vb.net из функции javascript?
Как я могу назвать эту подпрограмму функцией javascript?
Приветствия,
-Jonesy
Вы не можете назвать это непосредственно, как вызов функции. , потому что Javascript - это скриптинг langauge, предназначенный для веб-браузеров.
вы можете использовать AJAX или полностраничное сообщение, отправляющее параметры, позволяющие выполнять подпрограмму.
Узнайте больше о Ajax, это лучший способ пойти.
Чтобы расширить то, что сказал Kronass, я нашел эту статью полезной в прошлом для того, чтобы делать то, что вы хотите http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/. Encosia также имеет кучу других участков блога на это, если вы немного поиска
Что вы хотите использовать, как правило, называют WebMethod, ScriptMethod или Page Метод в зависимости от рамках которой вы используете
Один из способов сделать это - использовать интерфейс ICallbackEventHandler. Я видел, что на днях у вас возник вопрос относительно AjaxControToolkit CalendarExtender, поэтому я предполагаю, что этот вопрос относится к этому вопросу и как вы выполняете некоторую проверку в методе на стороне сервера. ICallbackEventHandler - это AJAX, но вы можете написать свою проверку как обычный метод, а не метод PageMethod/WebMethod. Это немного более странно на стороне Javascript, но не на много.
Давайте начнем с нашего основного текстового поля и календаря удлинителя:
<form id="form1" runat="server">
<asp:ScriptManager runat="server" ID="ScriptManager" />
<div>
<asp:TextBox runat="server" ID="DateTextBox" />
<ajaxtoolkit:CalendarExtender runat="server" ID="CalendarExtender" TargetControlID="DateTextBox"
PopupButtonID="SelectorButton" OnClientDateSelectionChanged="checkDate" Format="dd MMM yyyy" />
<asp:ImageButton runat="server" ID="SelectorButton" ImageUrl="Path to a pretty graphic" />
<br />
<asp:Label runat="server" ID="ValidDateLabel" />
</div>
</form>
Я добавил OnDateSelectionChanged атрибут удлинителя, как это начнется процесс вызова метода на стороне сервера; мы вернемся к тому, что там происходит в ближайшее время.
В объявлении класса в коде-позади, вы должны сказать, что вы реализуете интерфейс:
Partial Public Class _Default
Inherits System.Web.UI.Page
Implements ICallbackEventHandler
Для реализации интерфейса мы тогда нужно добавить еще два метода для обработки двух методов в интерфейс, RaiseCallbackEvent и GetCallbackResult. Нам также требуется свойство для небольшого временного хранения даты, которую мы пытаемся проверить.
Private mCallbackDate As Date
Private Property CallbackDate() As Date
Get
Return mCallbackDate
End Get
Set(ByVal value As Date)
mCallbackDate = value
End Set
End Property
Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements ICallbackEventHandler.RaiseCallbackEvent
'eventArgument will contain the date the user selected from the extender
Dim testDate As Date
If eventArgument = String.Empty Then
Else
If Date.TryParse(eventArgument, testDate) Then
'If we have a legal date selected then store it
Me.CallbackDate = testDate
End If
End If
End Sub
Public Function GetCallbackResult() As String Implements ICallbackEventHandler.GetCallbackResult
Dim result As String = String.Empty
'Get the date that we stored in memory and pass it to our CheckDate function
'We'll pass back to the Javascript in the page the string 'true' if the date is
'valid under our business rules and 'false' if it isn't
If checkDate(Me.CallbackDate) Then
Return "true"
Else
Return "false"
End If
End Function
Public Function checkDate(ByVal dateToCheck As Date) As Boolean
'If the date is in the future then return True, otherwise False
If dateToCheck > Date.Today Then
Return True
Else
Return False
End If
End Function
Там еще один бит на стороне сервера мы должны добавить в Page_Load, который делает подключение в Javascript и серверного кода. Функция GetCallbackEventReference ClientScriptManager добавит немного скрипта на нашу страницу, которая будет обеспечивать связь между браузером и сервером. Тогда нам просто нужно зарегистрировать блок сценария, который вызывает введенный скрипт - мы будем называть эту функцию checkDateOnServer.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim callbackScript As String
callbackScript = "function checkDateOnServer(arg){" & _
Page.ClientScript.GetCallbackEventReference(Me, "arg", "receiveDateValidation", "") & _
"}"
ClientScript.RegisterClientScriptBlock(Me.GetType, "callback", callbackScript, True)
End Sub
Назад к клиентским битам. Нам нужно написать функцию проверки JavaScript Javascript, которая будет передавать выбранную дату пользователя в обратный вызов.
function checkDate()
{
// Get the date the user selected
var selectedDate = document.getElementById('DateTextBox').value;
// This will start the callback sequence
checkDateOnServer(selectedDate);
}
Последний бит нам нужно сделать, это получить значение приходя от сервера, который мы говорили в Page_Load будет называться receiveDateValidation.
function receiveDateValidation(arg, context)
{
var ValidDateLabel = document.getElementById('SelectedDateLabel');
// We get a string value back from the server which is 'true' or 'false'
if (arg == 'true')
{
ValidDateLabel.innerText = 'Your date IS valid';
}
else
{
ValidDateLabel.innerText = 'Your date IS NOT valid';
}
}