动态用户控件控件在加载时为空

时间:2011-11-30 18:31:03

标签: c# asp.net dynamic user-controls null

我的ASP.Net应用程序中有一个基本用户控件,此usercontrol中有HTML标记,设置为runat =“server”和id。我遇到的问题是加载usercontrol时,HTML标记返回为null

ASP.Net C#代码:

public partial class webonlinecustombase : System.Web.UI.UserControl
{
    public Event Event { get; set; }
    public OnlineSystemPageCustom custompage { get; set; }
    public OnlineSystemPageCustom.OnlineSystemPageHdr.OnlineSystemPageModule custommodule { get; set; }

    public void Page_Load(object sender, EventArgs e)
    {
        string typeName = custommodule.ModuleInternetFile;
        inpagelink.HRef = "#" + custommodule.ModuleName.Replace(" ", "").Replace("/", "");
        modtitle.InnerText = custommodule.ModuleName;
        Type child = Type.GetType(typeName);
        UserControl ctl = Activator.CreateInstance(child) as UserControl;
        if (ctl != null)
        {
            this.modsection.Controls.Add(ctl);
        }
    }
}

以下是HTML标记:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="webonlinecustombase.ascx.cs" Inherits="IPAMIntranet.IPAM_Controls.webtemplatecontrols.webonlinecustombase" %>
<a id="inpagelink" runat="server"></a>
<span id="modtitle" runat="server" style="width:100%;text-align:left">Scientific Overview</span>
<div id="modsection" runat="server" style="width:100%;">
</div>
<p><a href="#top" class="bodylink">Back to Top</a></p>

为什么inpagelinkmodtitle被返回为null?

2 个答案:

答案 0 :(得分:0)

我在Web应用程序(而不是网站)中看到这种情况发生在对源进行更改时(尤其是在以前不是runat = server的项目上设置runat = server),但是您没有切换到设计器视图

我解决此问题的方法是切换到设计视图并弄脏其中一个字段中的属性。这通常会导致VS更新设计器代码隐藏文件。

您可以仔细检查此文件以确保已添加控件。如果在执行此操作之前进行检查,您应该会发现它们已丢失。

答案 1 :(得分:-4)

asp.net没有span类,所以你不能用它代码做任何事情。

使用LinkBut​​ton或HyperLink代替

另一个解决方案是创建span或代码,类似这样

var span = new HtmlGenericControl("span");
span.InnerHtml = "From<br/>Date";
span.Attributes["class"] = "blue";
placeholder.Controls.Add(span);
希望我能帮助:))