c# - 如何更改 CreateUserWizard 控件的布局?

标签 c# asp.net asp.net-membership asp.net-4.0

如何以编程方式仅更改 CreateUserWizard 控件的布局(模板)?我会定义另一个布局(不使用可怕的表)但继续使用所有事件处理和 CreateUserWizard 控件的用户创建。 仅供引用,以下代码不起作用,并产生完全不代表我的模板的意外结果。 ITemplate 的“InstantiateIn”方法未被调用。

public partial class b : System.Web.UI.Page
    {
        protected void Page_Init(object sender, EventArgs e)
        {
            CreateUserWizard createUserWizard = new CreateUserWizard();
            createUserWizard.CreateUserStep.ContentTemplate = new Template();
            Panel1.Controls.Add(createUserWizard);
        }
    }

    public class Template : ITemplate
    {
        void ITemplate.InstantiateIn(Control container)
        {
            container.Controls.Add(new TextBox() { ID = "UserName" });
            container.Controls.Add(new TextBox() { ID = "Password" });
            container.Controls.Add(new TextBox() { ID = "ConfirmPassword" });
            container.Controls.Add(new TextBox() { ID = "Email" });
            container.Controls.Add(new PlaceHolder() { ID = "ErrorMessage" });
        }
    }
}

最佳答案

我不知道为什么会这样,但确实如此:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Init(object sender, EventArgs e)
    {
        CreateUserWizard createUserWizard = new CreateUserWizard();

        /* Difference Starts Here */
        CreateUserWizardStep createUserWizardStep = new CreateUserWizardStep();
        createUserWizardStep.ContentTemplate = new Template();
        createUserWizard.WizardSteps.Add(createUserWizardStep);
        /* End Difference */

        Panel1.Controls.Add(createUserWizard);
    }
}

public class Template : ITemplate
{
    void ITemplate.InstantiateIn(Control container)
    {
        container.Controls.Add(new TextBox() { ID = "UserName" });
        container.Controls.Add(new TextBox() { ID = "Password" });
        container.Controls.Add(new TextBox() { ID = "Question" });
        container.Controls.Add(new TextBox() { ID = "Answer" });
        container.Controls.Add(new TextBox() { ID = "ConfirmPassword" });
        container.Controls.Add(new TextBox() { ID = "Email" });
        container.Controls.Add(new PlaceHolder() { ID = "ErrorMessage" });
    }
}

我所做的是向页面添加一个 CreateUserWizard 控件,添加一个空白的 ContentTemplate,然后按照 debugging generated ASP.NET code 的说明进行操作对 ASP.NET 代码生成器的功能进行逆向工程。

关于c# - 如何更改 CreateUserWizard 控件的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4575214/

相关文章:

c# - 不使用自定义成员资格提供程序的 ASP.NET MVC 登录 Controller 方法?

c# - 获取类字段列表

c# - 如何计算点后的字符数

c# - 在哪里可以找到 System.Web.Helpers、System.Web.WebPages 和 System.Web.Razor?

c# - 使用 ASP.NET 从 C# 中引用 jQuery 生成的隐藏字段

asp.net - 使用 ASP.NET 成员身份将 2FA 添加到 .NET Web 应用程序

c# - 在SQL中选择TOP行,得到5行尾表

asp.net - 在 HTTP 和 HTTPS 之间自动切换 asp.net

c# - 简单的 BackgroundWorker 没有更新网页上的标签

c# - LiteralControl 出现意外标记 "}"错误