1

我正在尝试构建一个可在多个 aspx 页面中使用的可重用控件 (ascx)。我在控件中有一个具有 SelectMethod 的数据源。我想使用调用页面名称(减去扩展名)作为 SelectMethod 的名称 - 可以在其他地方查找。

不知道如何从 ascx 页面访问这些信息。希望像这样的伪代码可以工作:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="Parent.pagename()" TypeName="BlahBlah"></asp:ObjectDataSource>

其中 pagename() 是 .ascx.cs 文件中的一个函数,将父 aspx 页面名称作为字符串返回,该字符串可以在 BLL 中的 ObjectContextFacadeManager 的其他地方作为 SelectMethod 查找(它是一个大型庞然大物应用程序 - 我只有一半我知道)。

干杯。

4

1 回答 1

1

您可以使用AppRelativeCurrentExecutionFilePath. 但是,要输出它,您可能必须使用代码隐藏,因为使用内联脚本,例如:

SelectMethod="<%Request.AppRelativeCurrentExecutionFilePath%>"

runat="server"不能用作具有(IIRC)的控件的属性值。

因此,在加载或其他事件时,您可以通过编程方式设置:

Page_Load(object sender, EventArgs e) {
  SelectMethod = System.IO.Path.GetFileNameWithoutExtension(
    Request.AppRelativeCurrentExecutionFilePath);
}
于 2013-05-28T11:01:20.327 回答