创建基本控件设计器

本文关键字:控件 创建 | 更新日期: 2023-09-27 17:55:46

我正在尝试遵循演练:

演练:为 Web 服务器控件创建基本控件设计器

基本上我已经创建了一个带有 asp.net Razor 4的新网站

并添加了以下代码:

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Web.UI;
using System.Web.UI.Design;
using System.Web.UI.Design.WebControls;
using System.Web.UI.WebControls;
namespace Samples.AspNet.CS.Controls
{
    public class SimpleCompositeControl : CompositeControl
    {

    private String _prompt = "Please enter your date of birth: ";
public virtual String Prompt
{
    get
    {
        object o = ViewState["Prompt"];
        return (o == null) ? _prompt : (string)o;
    }
    set
    {
        ViewState["Prompt"] = value;
    }
}
public virtual DateTime DOB
{
    get
    {
        object o = ViewState["DOB"];
        return (o == null) ? DateTime.Now : (DateTime)o;
    }
    set
    {
        ViewState["DOB"] = value;
    }
}


protected override void CreateChildControls() 
{
    Label lab = new Label();
    lab.Text = Prompt;
    lab.ForeColor = System.Drawing.Color.Red;
    this.Controls.Add(lab);
    Literal lit = new Literal();
    lit.Text = "<br />";
    this.Controls.Add(lit);
    TextBox tb = new TextBox();
    tb.ID = "tb1";
    tb.Text = DOB.ToString();
    this.Controls.Add(tb);
    base.CreateChildControls();
}


[Designer(typeof(SimpleCompositeControlDesigner))]
public class SimpleCompositeControl : CompositeControl

public class SimpleCompositeControlDesigner : CompositeControlDesigner
{
    // Set this property to prevent the designer from being resized.
    public override bool AllowResize 
    {
        get { return false; }
    }
}

}

为什么我得到的类型或命名空间设计不存在?

创建基本控件设计器

需要向项目添加程序集引用。在解决方案资源管理器中,右键单击"引用"->"添加引用"-">程序集"->"框架"->,然后选中"System.Web"旁边的框,然后单击"确定"将该 DLL 添加到项目中。

System.Design做同样的事情。


编辑:为网站执行此操作。当您将.cs文件添加到网站解决方案时,Visual Studio 可能会提示您将此文件移动到 App_Code 文件夹,假设您答应答应答应。然后右键单击该文件夹并单击添加引用以添加System.Design因为默认情况下System.Web包含在网站中。