是否可以从aspx文件中检索Request.QueryString中的ID值并将其传递到ascx文件,以便使用检索到的ID成功更新配置文件?
答案 0 :(得分:6)
通常,如果UserControl中存在某些内容,则可能是因为控件中的功能非常重要,可以分解为可以在其他页面上重用的自己的可重用容器。如果该控件实际上将在另一个页面上重用,它实际上不应该引用查询字符串参数,因为控件不应该假设它在哪个页面上。如果该控件包含在查询字符串参数命名不同的另一个页面上,该怎么办?或者可能在另一个页面上,该值将来自数据库或ViewState,或者将以某种方式自动确定?所以我的一般规则是,如果你要创建一个UserControl,永远不要,永远不要对它所托管的页面做出任何假设。
就像大多数人说的那样,你仍然可以从UserControl中访问Request.QueryString属性,但这可能不是最好的主意。在容器页面设置的控件上创建属性是一个好主意。
在我看来,最好的想法,以及我几乎总是这样做,是在控件上创建名为LoadData(或类似的东西)的方法,其中包含您需要的所有查询字符串值的参数。这样,您就可以获得该数据的单个入口点,因此很清楚这些值的设置点和设置值。如果你去了属性路线,总会关注是否所有属性都已设置,以及它们是否在页面生命周期中设置在正确的位置(在回发期间可能会变得棘手)
答案 1 :(得分:3)
在您的aspx
页面,ascx
用户控件,母版页中,自定义控件中,几乎无处不在,可以访问查询字符串。使用以下方法之一:
Page.Request.QueryString
HttpContext.Current.Request
答案 2 :(得分:2)
您可以从UserControl的代码隐藏中访问Request.QueryString集合。
答案 3 :(得分:0)
您可以将查询字符串值作为ascx控件的属性传递,如:
<cc:myControl id="myControl" runat="server" myValue='<%=request.querystring("id")' />
然后在您的自定义控件的代码中,在您的类中添加以下内容:
Public myValue as String