【问题标题】:How do I properly call a C# variable in Jquery. The 'variable name' does not exist in the current context如何在 Jquery 中正确调用 C# 变量。当前上下文中不存在“变量名”
【发布时间】:2013-06-30 09:05:58
【问题描述】:

我在我的代码隐藏中存储了几个值作为 via 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>

【问题讨论】:

    标签: c# jquery sql webforms


    【解决方案1】:

    一切都与范围有关。 Image1Image2Image3Page_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"];
        }
      }
    }
    

    【讨论】:

    • 例如public string Image1 = Request.QueryString["ImageAlt1"]; 喜欢这个?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我在今年早些时候遇到了这个问题。试试这个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"];
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-22
        相关资源
        最近更新 更多