Asp.net 如何从.aspx页面检索querystring值并将其传递给ascx页面

Asp.net 如何从.aspx页面检索querystring值并将其传递给ascx页面,asp.net,.net,vb.net,user-controls,request.querystring,Asp.net,.net,Vb.net,User Controls,Request.querystring,是否可以从aspx文件的Request.QueryString中检索ID值并将其传递到ascx文件,以便使用检索到的ID成功更新配置文件?您可以将QueryString值作为ascx控件的属性传递,如: <cc:myControl id="myControl" runat="server" myValue='<%=request.querystring("id")' /> 您可以从UserControl的代码隐藏中访问Request.QueryString集合。在aspx页面

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

您可以将QueryString值作为ascx控件的属性传递,如:

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

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

aspx
页面中、在
ascx
用户控件中、在母版页中、在自定义控件中以及几乎所有地方,您都可以访问查询字符串。使用以下方法之一:

  • 通过
    Page.Request.QueryString
  • 在用户控件中创建属性,然后在页面中强制转换用户控件以获取对该属性的引用并设置该属性。然后在用户控件中,使用该属性
  • 在ASP.NET环境中的任何位置,通过
    HttpContext.Current.request

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

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

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

    Public myValue as String