1

我在我的代码隐藏中存储了几个值,Request.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 中调用这些值,我得到一个does not exist in current context错误这里是我的 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
                    }
                }
            });
        });

我不确定我做错了什么。我唯一的猜测是在获取变量之前调用了 jquery,因为它应该被设置。

这是我的表单视图,我在其中调用我的其余项目:

<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>
4

3 回答 3

2

一切都与范围有关。Image1,Image2并且是 then方法Image3中的局部变量。Page_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"];
    }
  }
}
于 2013-07-02T20:20:16.903 回答
1

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

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"];
    }

}
于 2013-07-02T20:33:25.530 回答
0

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

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"];
    }

}
于 2013-07-02T20:23:01.303 回答