gpt4 book ai didi

c# - 在 UserControl (ASP.NET) 中时 URL 未被解析

转载 作者:太空狗 更新时间:2023-10-29 19:40:05 25 4
gpt4 key购买 nike

如果我向派生类 testA 传递一个包含 HyperlinkPlaceHolder,其 url 开头为 波浪号,它正确地解决了它。 但是,当我通过 testB (除了它继承自 System.Web.UI.UserControl)同PlaceHolder吧 从字面上呈现它(不 转换/解析 '~')

有什么想法吗?

public class testA : System.Web.UI.Control
{
public System.Web.UI.WebControls.PlaceHolder plc { get; set; }
protected override void OnLoad(EventArgs e)
{
if (plc != null)
this.Controls.Add(plc);
base.OnLoad(e);
}
}


public class testB : System.Web.UI.UserControl
{
public System.Web.UI.WebControls.PlaceHolder plc { get; set; }
protected override void OnLoad(EventArgs e)
{
if (plc != null)
this.Controls.Add(plc);
base.OnLoad(e);
}
}

这是 ASP.NET

最佳答案

当您从 System.Web.UI.UserControl 继承并且不将您的控件与 ascx 文件相关联时,您的控件 TemplateSourceVirtualDirectory 将未设置,这是 ResolveClientUrl 方法所必需的 - 如果它为 null 或为空,则 url 将按原样返回。

要解决您的问题,只需设置 AppRelativeTemplateSourceDirectory :

public class testB : System.Web.UI.UserControl
{
public System.Web.UI.WebControls.PlaceHolder plc { get; set; }
protected override void OnLoad(EventArgs e)
{
if (plc != null)
{
this.AppRelativeTemplateSourceDirectory =
plc.AppRelativeTemplateSourceDirectory;
this.Controls.Add(plc);
}
base.OnLoad(e);
}
}

关于c# - 在 UserControl (ASP.NET) 中时 URL 未被解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3969546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com