2

我已经启动了变量并声明了它们

protected string Image1;
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        string Image1 = Request.QueryString["ImageAlt1"];
    }
}

我已经正确调用了 jquery 中的变量,当我测试链接时,我什么也没得到

 $("#fancybox-manual-c").click(function () {
            $.fancybox.open([
                {
                    href: '<%=Image1%>',/*returns '' instead of 'path/image.jpg'*/
                    title: 'My title'
                }
            ], {
                helpers: {
                    thumbs: {
                        width: 75,
                        height: 50
                    }
                }
            });

<%=Image1%>发现我放置在 javascript 中的返回 null 因为当我从href属性中删除所有值时,我得到了同样的错误。

href:'' /*causes the jquery not to fire when the link is clicked*/

最后,我测试了是否Request.QueryString返回 null 所以我将值放在image1标签中

lblImage1.Text = Image1; //returns 'path/image.jpg'

以及标签中发布的图像的路径。为什么jQuery中相同的变量是空白的?我错过了什么?

4

2 回答 2

9

因为您将值设置为仅在if条件范围内创建的局部变量。

将行更改为此,它将起作用:

Image1 = Request.QueryString["ImageAlt1"];
于 2013-07-03T13:33:51.330 回答
2

您有两个名为“Image1”的变量。其中之一将(根据您编写的代码)永远不会被设置为任何东西(并且它是打印的那个)。

protected string Image1;
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        string Image1 = Request.QueryString["ImageAlt1"]; // introduces a new variable named Image1
        // this.Image1 and Image1 are not the same variables
    }
    // local instance of Image1 is no more. (out of scope)
}

试试这个

protected string Image1;
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        Image1 = Request.QueryString["ImageAlt1"];
    }
}

注意缺少string. 通过在变量的类型前面添加变量,您可以在该范围内创建该变量的新本地实例。

于 2013-07-03T13:35:20.177 回答