如何在Jquery中正确调用C#变量。';变量名';在当前上下文中不存在

如何在Jquery中正确调用C#变量。';变量名';在当前上下文中不存在,c#,jquery,sql,webforms,C#,Jquery,Sql,Webforms,我在codebehind中存储了两个值,作为一个via请求。QueryString如下所示: protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { lblRow.Text = Request.QueryString["num"]; string Image1 = Request.QueryString["ImageAlt1"];

我在codebehind中存储了两个值,作为一个via
请求。QueryString
如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        lblRow.Text = Request.QueryString["num"];
        string Image1 = Request.QueryString["ImageAlt1"];
        string Image2 = Request.QueryString["ImageAlt2"];
        string Image3 = Request.QueryString["ImageAlt3"];
    }

}
然后我尝试在jquery中调用这些值,得到一个
在当前上下文中不存在的
错误,这是我的jquery

$("#fancybox-manual-c").click(function () {
            $.fancybox.open([
    {
        href: "<%= Image1 %>",
        title: 'My title'
        }, {
        href: '<%= Image2 %>',
        title: '2nd title'
        }, {
        href: '<%= Image3 %>'
    }
            ], {
                helpers: {
                    thumbs: {
                        width: 75,
                        height: 50
                    }
                }
            });
        });
$(“#fancybox-manual-c”)。单击(函数(){
$.fancybox.open([
{
href:“,
标题:“我的标题”
}, {
href:“”,
标题:“第二名”
}, {
href:'
}
], {
助手:{
拇指:{
宽度:75,
身高:50
}
}
});
});
我不确定我做错了什么。我唯一的猜测是,jquery是在提取变量之前被调用的,因为它应该被设置

这是我的formview,我在其中调用我的其余项目:

<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource3" 
    DataKeyNames="num">
     <ItemTemplate>
         <asp:Label ID="ItemType_Label" runat="server" Text='<%# Bind("ItemName") %>' />
         <br />
         <asp:Label ID="ItemDescription_Label" runat="server" Text='<%# Bind("ItemDescription") %>' />
         <br />
         <b>Asking Price:</b>
         <asp:Label ID="ItemPrice_Label" runat="server" Text='<%# Bind("ItemPrice") %>' />
         <br />
         <ul>
         <li><a id="fancybox-manual-c" href="javascript:;">Open gallery</a></li>
         </ul>

    </ItemTemplate>
</asp:FormView>



这一切都与范围有关
Image1
Image2
Image3
是then
Page\u Load
方法中的局部变量。您应该直接在类中而不是在任何方法中声明它们

public class MyApp
{
  public string Image1;
  public string Image2;
  public string Image3;

  protected void Page_Load(object sender, EventArgs e)
  {
    if (!Page.IsPostBack)
    {
      lblRow.Text = Request.QueryString["num"];
      Image1 = Request.QueryString["ImageAlt1"];
      Image2 = Request.QueryString["ImageAlt2"];
      Image3 = Request.QueryString["ImageAlt3"];
    }
  }
}

您需要像这样在类级别定义这些变量

protected string Image1,Image2,Image3;
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        lblRow.Text = Request.QueryString["num"];
        Image1 = Request.QueryString["ImageAlt1"];
        Image2 = Request.QueryString["ImageAlt2"];
        Image3 = Request.QueryString["ImageAlt3"];
    }

}

今年早些时候我遇到了这个问题。试试这个Skulomana

public string Image1,Image2,Image3;
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        lblRow.Text = Request.QueryString["num"];
        Image1 = Request.QueryString["ImageAlt1"];
        Image2 = Request.QueryString["ImageAlt2"];
        Image3 = Request.QueryString["ImageAlt3"];
    }

}

例如,
publicstringimage1=Request.QueryString[“ImageAlt1”]