将变量传递到URL

时间:2013-07-25 08:09:15

标签: html asp.net vb.net function

我有一个包含我从数据库访问过的变量的函数。 我试图用下面所述的方式将该变量与URL连接起来。

PopupWindow=window.open('Http://' + svrname +'/Quoteman/DatePicker.aspx?Ctl=' + ctl,'DatePicker',settings);

我在尝试编译代码时收到错误 这是功能:

     Public Function getserverName() As String
    Dim connection As SqlConnection
    Dim command As SqlCommand
    Dim readData As SqlDataReader
    Dim path As String
    path = ""

    connection = New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("getServer"))
    connection.Open()
    command = New SqlCommand("select [Email_Notification_Date] from GlobalDB where [Email_Notification_Date]='Batman'", connection)
    readData = command.ExecuteReader
    While readData.Read()
        path = readData.Item("Email_Notification_Date")
    End While
    connection.Close()
    Return path
End Function

这是我试图调用函数的地方:

    function PopupPicker(ctl,w,h)
{
var PopupWindow = null;
var serverName = new getServername;
svrname = serverName.getServername;
    settings='width='+ w + ',height='+ h + ',location=no,directories=no, menubar=no,toolbar=no,status=no,scrollbars=no,resizable=no,dependent=no';
    PopupWindow=window.open('Http://' + svrname +'/Quoteman/DatePicker.aspx?Ctl=' + ctl,'DatePicker',settings);
    PopupWindow.focus();
}

P.S。该函数确实返回一个值。

编辑:对不起,忘了说我试图从javascript调用VB函数 这是我从错误中得到的窗口。

Unhandled exception at line 200, column 5 in http://localhost:50209/Admin/EmployeeAssets.aspx || 0x800a1391 - JavaScript runtime error: 'getServername' is undefined
编辑:我在函数中添加了一个参数,现在它给了我'通过实例访问共享成员,常量成员,枚举成员或嵌套类型;资格表达不会被评估。

这是我修改后的代码

    <System.Web.Services.WebMethod()>
Public Shared Function getServerName(suffix As String) As String
    Dim connection As SqlConnection
    Dim command As SqlCommand
    Dim readData As SqlDataReader
    Dim path As String
    path = ""

    connection = New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("getServer"))
    connection.Open()
    command = New SqlCommand("select [Email_Notification_Date] from GlobalDB where [Email_Notification_Date]='Batman'", connection)
    readData = command.ExecuteReader
    While readData.Read()
        path = readData.Item("Email_Notification_Date")
    End While
    connection.Close()
    Return ("http://") + path + suffix
End Function

我已经编辑了主文件,以包含一个字符串作为参数。

PopupWindow=window.open(<%= (New getServerName).getserverName("/Quoteman/DatePicker.aspx?Ctl=") %> + ctl,'DatePicker',settings);

3 个答案:

答案 0 :(得分:2)

您正在从客户端调用服务器端(您正在连接到数据库)代码,最常用的方法是,将服务器名称写入服务器上的javascript。

PopupWindow = window.open('Http://' + '<%= GetServerName.getserverName() %>' +'/Quoteman/...');

另一种可能的方法是使用AJAX调用。您可以查看此博文:http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

它在服务器端使用C#,但没关系,你可以这样标记你的功能:

<WebMethod> _
Public Shared Function getserverName() As String

答案 1 :(得分:1)

  

JavaScript运行时错误:' getServername '未定义

该函数名为 getserverName ,JavaScript区分大小写,也许就是全部。

答案 2 :(得分:1)

看起来像是从服务器方法返回字符串是你想要的,在这种情况下你可以使用 PageMethod 对象:

您可以通过声明脚本管理器并将 EnablePageMethods 属性设置为 true

来启用它
<asp:ScriptManager ID="ScriptManager1" 
 EnablePageMethods="true" 
 EnablePartialRendering="true" runat="server" />

将函数声明为WebMethod,因此必须才能共享:

<System.Web.Services.WebMethod> _
Public Shared Function getserverName() As String

End Function

然后脚本:

<script>
    function test(){
        alert(PageMethods.getserverName());
    }
</script>

还有一种方法可以使用jQuery,但我没有这样做,但Check it out

可以找到此示例的Soruce here但是使用C#语法。

希望有所帮助。