1

我对特定用户控制有以下问题:

它显示为白色,并且 ( ) 中根本没有控件出现design view。( design time)

但来源:

<%@ Control Language="C#" AutoEventWireup="True" CodeBehind="Follow_New.ascx.cs"
    Inherits="DFUI.UserControls.Follow_New" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<%@ Register Assembly="MattBerseth.WebControls" Namespace="MattBerseth.WebControls"
    TagPrefix="mb" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
.
.
.
.
.

如何在设计视图中显示所有要编辑的控件而不是被源视图困扰,有什么问题?

4

3 回答 3

1

一种确保您的控件在设计视图中“可见”的方法,您可以像这样覆盖渲染:

    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        if (this.DesignMode)
        {
            //render control for designer...
            writer.Write(string.Format("<div>{0}</div>", this.ID));
        }
        else
        {
            //render actual control in runtime...
            base.Render(writer);
        }
    } 

要在设计器中启用控件编辑,您应该从 INamingContainer 继承,这是一个简单的演示:

[ToolboxData("<{0}:TabContainer runat=server></{0}:TabContainer>")]
[ParseChildren(ChildrenAsProperties = false)]
[PersistChildren(true)]
public class TabContainer : Panel, INamingContainer
{

    List<TabItem> tabs = new List<TabItem>();

    [Browsable(true)]
    [PersistenceMode(PersistenceMode.InnerProperty)]
    public List<TabItem> Tabs
    {
        get { return this.tabs; }
    }
}

public class TabItem : Panel, IPostBackEventHandler
{

    public event EventHandler Click;

}

所以设计视图看起来像这样:

        <cc1:TabContainer ID="TabContainer1" runat="server">
            <Tabs>
                <cc1:TabItem ID="TabFirst" />
                <cc1:TabItem ID="TabSecond" />
            </Tabs>
        </cc1:TabContainer>

希望这可以帮助!

于 2013-04-29T14:28:30.003 回答
1

您是否检查了设计视图是否打开?转到选项 > 显示所有设置 > 滚动到 HTML 设计器 > 选择启用 HTML 设计器(需要重新启动 VS)

另一个原因可能是 HTML 损坏,打开你的 ASCX(不是后面的代码)然后按 CTRL+K然后CTRL+ D

于 2013-04-30T11:18:34.557 回答
1

如果您试图让控件显示在工具箱中,您可能需要手动将您引用的 dll 添加到工具箱中。右键单击工具箱,然后浏览到您正在引用的 dll 的位置并选择您需要的那些。这将使任何正确标记的控件(以@gregor-primar 描述的方式标记)显示在工具箱中。

于 2013-04-30T12:58:28.743 回答