可以从请求中检索ID值。从aspx文件中的QueryString并将其传递到ascx文件,以便使用检索到的ID成功更新配置文件?
通常,如果某些东西在UserControl中,要么是因为控件中的功能足够重要,可以拆分到它自己的可重用容器中,可以在另一个页面上重用。如果该控件实际上要在另一个页面上重用,那么它真的不应该引用查询字符串参数,因为控件不应该假设它在哪个页面上。如果该控件包含在查询字符串参数命名不同的另一个页面上,该怎么办?或者在另一个页面上,该值将来自数据库或ViewState或将以某种方式自动确定?所以我的一般规则是,如果你要创建一个UserControl,永远不要,永远不要对它所在的页面做任何假设。
就像大多数人说的,你仍然可以访问请求。QueryString属性从UserControl内部,但这可能不是最好的主意。在由容器页设置的控件上创建属性是一个更好的主意。在我看来,最好的主意,我几乎总是做的,是在控件上创建一个名为LoadData(或类似的东西)的方法,为你需要的所有这些查询字符串值提供参数。这样你就有了一个数据的入口点,所以很清楚这些值在什么地方被设置以及它们被设置到什么位置。如果你走属性路线,总是会考虑是否设置了所有的属性,以及它们是否在页面生命周期的正确点设置(在回发期间可能会很棘手)
在您的aspx
页面,在您的ascx
用户控件,在您的母版页,在您的自定义控件和几乎任何地方,您可以访问查询字符串。使用以下方法之一:
- 通过
Page.Request.QueryString
直接访问用户控件内的查询字符串 在用户控件中创建一个属性,然后在页面中强制转换用户控件以获取对该属性的引用并设置该属性。然后在用户控件中使用该属性。 - ASP中的任何地方。. NET环境下,通过
HttpContext.Current.Request
访问请求(包括查询字符串)
您可以访问Request。
您可以将查询字符串值作为ascx控件的属性传递,如:
<cc:myControl id="myControl" runat="server" myValue='<%=request.querystring("id")' />
然后在自定义控件后面的代码中,在类中添加以下内容:
Public myValue as String