为什么我的C#变量在Jquery中返回null?

时间:2013-07-03 13:31:50

标签: c# jquery

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

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
                    }
                }
            });

我发现我放在javascript中的<%=Image1%>返回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中的相同变量是空白的?我错过了什么?

2 个答案:

答案 0 :(得分:9)

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

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

Image1 = Request.QueryString["ImageAlt1"];

答案 1 :(得分: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。通过在类型前面添加变量,可以在该范围内创建该变量的新本地实例。