Динамические пользовательские элементы управления нулевые при загрузке - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть базовый usercontrol в моем приложении ASP.Net. В этом usercontrol есть разметка HTML, для которой установлены runat = "server" и id.Проблема, с которой я сталкиваюсь, заключается в том, что при загрузке пользовательского элемента управления разметка HTML возвращается как нулевой

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>

Почему inpagelink и modtitle возвращаются как нулевые?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2011

asp.net не имеет класса span, поэтому с ним ничего нельзя сделать в коде.

используйте LinkButton или HyperLink вместо

другое решение - создать span или in в коде, что-то вроде этого

var span = new HtmlGenericControl("span");
span.InnerHtml = "From<br/>Date";
span.Attributes["class"] = "blue";
placeholder.Controls.Add(span);

надеюсь, я помог:))

0 голосов
/ 30 ноября 2011

Я видел, как это происходило в веб-приложениях (не веб-сайтах), когда в исходный код вносились изменения (особенно в настройке runat = server для элементов, которые ранее не были runat = server), но вы не переключаетесь на представление дизайнера .

Способ решения этой проблемы состоит в том, чтобы переключиться в режим конструктора и очистить свойство в одном из полей. Обычно это приводит к тому, что VS обновляет файл кода разработчика.

Вы можете дважды проверить этот файл, чтобы убедиться, что элементы управления были добавлены. Если вы проверите это до этого, вы должны увидеть, что они отсутствуют.

...