如何从.aspx页面检索查询字符串值并将其传递给ascx页面

时间:2011-07-08 08:10:29

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

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

4 个答案:

答案 0 :(得分:6)

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

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

在我看来,最好的想法,以及我几乎总是这样做,是在控件上创建名为LoadData(或类似的东西)的方法,其中包含您需要的所有查询字符串值的参数。这样,您就可以获得该数据的单个入口点,因此很清楚这些值的设置点和设置值。如果你去了属性路线,总会关注是否所有属性都已设置,以及它们是否在页面生命周期中设置在正确的位置(在回发期间可能会变得棘手)

答案 1 :(得分:3)

在您的aspx页面,ascx用户控件,母版页中,自定义控件中,几乎无处不在,可以访问查询字符串。使用以下方法之一:

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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

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

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

Public myValue as String