【发布时间】:2011-07-08 08:10:28
【问题描述】:
是否可以从 aspx 文件的 Request.QueryString 中检索 ID 值并将其传递到 ascx 文件,以便使用检索到的 ID 成功更新配置文件?
【问题讨论】:
标签: asp.net .net vb.net user-controls request.querystring
是否可以从 aspx 文件的 Request.QueryString 中检索 ID 值并将其传递到 ascx 文件,以便使用检索到的 ID 成功更新配置文件?
【问题讨论】:
标签: asp.net .net vb.net user-controls request.querystring
如果用户控件中有某些东西,通常是因为控件中的功能足够重要,可以分解成它自己的可重用容器,可以在另一个页面上重用。如果该控件实际上要在另一个页面上重用,它真的不应该引用查询字符串参数,因为该控件不应该对它所在的页面做出任何假设。如果该控件包含在查询字符串参数名称不同的另一个页面上怎么办?或者可能在另一个页面上,该值将来自数据库或 ViewState,或者会以某种方式自动确定?所以我的一般规则是,如果你要创建一个 UserControl,永远,永远永远不要对托管它的页面做出任何假设。
就像大多数人所说的那样,您仍然可以从 UserControl 内部访问 Request.QueryString 属性,但这可能不是最好的主意。在由容器页面设置的控件上创建一个属性是一个更好的主意。
在我看来,最好的想法,也是我几乎总是做的,是在控件上创建名为 LoadData(或类似的东西)的方法,并为您需要的所有查询字符串值提供参数。这样,您就有了该数据的单一入口点,因此很清楚这些值在什么时候被设置以及它们被设置为什么。如果你走属性路线,总是会担心是否所有的属性都设置好了,以及它们是否在页面生命周期的正确位置设置(在回发期间会变得很棘手)
【讨论】:
在您的aspx 页面、ascx 用户控件、母版页、自定义控件以及几乎任何地方,您都可以访问查询细绳。使用以下方法之一:
Page.Request.QueryString直接访问用户控件内的查询字符串HttpContext.Current.Request 访问请求(包括查询字符串)
【讨论】:
您可以从 UserControl 的代码隐藏中访问 Request.QueryString 集合。
【讨论】:
您可以将查询字符串值作为 ascx 控件的属性传递,例如:
<cc:myControl id="myControl" runat="server" myValue='<%=request.querystring("id")' />
然后在自定义控件后面的代码中,在您的类中添加以下内容:
Public myValue as String
【讨论】: