在UserControl(ASP.NET)中,URL未被解析

max*_*axp 8 c# asp.net user-controls resolve

如果我传递包含a 的派生类testAa PlaceHolder,其中 Hyperlinkurl以波浪号开头,则会正确解析它.然而,当我传递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);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是ASP.NET

MK.*_*MK. 5

当你继承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);
    }
}
Run Code Online (Sandbox Code Playgroud)