【问题标题】:how to retrieve a querystring value from an .aspx page and pass it to ascx page如何从 .aspx 页面检索查询字符串值并将其传递给 ascx 页面
【发布时间】:2011-07-08 08:10:28
【问题描述】:

是否可以从 aspx 文件的 Request.QueryString 中检索 ID 值并将其传递到 ascx 文件,以便使用检索到的 ID 成功更新配置文件?

【问题讨论】:

    标签: asp.net .net vb.net user-controls request.querystring


    【解决方案1】:

    如果用户控件中有某些东西,通常是因为控件中的功能足够重要,可以分解成它自己的可重用容器,可以在另一个页面上重用。如果该控件实际上要在另一个页面上重用,它真的不应该引用查询字符串参数,因为该控件不应该对它所在的页面做出任何假设。如果该控件包含在查询字符串参数名称不同的另一个页面上怎么办?或者可能在另一个页面上,该值将来自数据库或 ViewState,或者会以某种方式自动确定?所以我的一般规则是,如果你要创建一个 UserControl,永远,永远永远不要对托管它的页面做出任何假设。

    就像大多数人所说的那样,您仍然可以从 UserControl 内部访问 Request.QueryString 属性,但这可能不是最好的主意。在由容器页面设置的控件上创建一个属性是一个更好的主意。

    在我看来,最好的想法,也是我几乎总是做的,是在控件上创建名为 LoadData(或类似的东西)的方法,并为您需要的所有查询字符串值提供参数。这样,您就有了该数据的单一入口点,因此很清楚这些值在什么时候被设置以及它们被设置为什么。如果你走属性路线,总是会担心是否所有的属性都设置好了,以及它们是否在页面生命周期的正确位置设置(在回发期间会变得很棘手)

    【讨论】:

      【解决方案2】:

      在您的aspx 页面、ascx 用户控件、母版页自定义控件以及几乎任何地方,您都可以访问查询细绳。使用以下方法之一:

      1. 通过Page.Request.QueryString直接访问用户控件内的查询字符串
      2. 在您的用户控件中创建一个属性,然后在您的页面中,强制转换您的用户控件以获取对该属性的引用并设置该属性。然后在您的用户控件中使用该属性。
      3. 在 ASP.NET 环境中的任何地方,通过HttpContext.Current.Request 访问请求(包括查询字符串)

      【讨论】:

        【解决方案3】:

        您可以从 UserControl 的代码隐藏中访问 Request.QueryString 集合。

        【讨论】:

          【解决方案4】:

          您可以将查询字符串值作为 ascx 控件的属性传递,例如:

          <cc:myControl id="myControl" runat="server" myValue='<%=request.querystring("id")' />
          

          然后在自定义控件后面的代码中,在您的类中添加以下内容:

          Public myValue as String
          

          【讨论】:

            猜你喜欢
            • 2015-05-12
            • 2012-04-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-09
            • 1970-01-01
            相关资源
            最近更新 更多