.NET createuserwizard - 如何提供预填充(和禁用)的电子邮件字段

时间:2010-06-02 18:46:48

标签: c# .net

我正在创建一个.NET网站,这是我第一次使用createuserwizard控件。

我需要预先填写用户的电子邮件地址(该网站仅限邀请)并禁用它。但是,仍然需要电子邮件字段。

我已设法编辑模板并禁用电子邮件字段,并以编程方式填写.aspx.cs文件。但是,当我禁用电子邮件字段并预先填写它时,createuserwizard表单将不会提交。它将电子邮件字段视为空,并始终将我返回到创建用户页面,电子邮件字段带有红色星号。即使我将RequireEmail属性设置为False,也会发生这种情况。

有没有办法强制用户注册给定的电子邮件地址?我曾希望createuserwizard能让我的生活更轻松,但到目前为止还没有。感谢。

3 个答案:

答案 0 :(得分:1)

我做过这样的事 - 在我的情况下我不想要一个单独的用户名,我用他们的电子邮件地址作为他们的用户名(并且不允许他们改变它),所以我做了:

  • 在标记中,将Email设置为ReadOnly =“true”,将UserName设置为Visible =“false”
  • 在Page_Load中,在if(!postback)里面,将电子邮件文本框设置为文本到电子邮件地址并将ReadOnly设置为true
  • 在CreatingUser事件中,设置UserName.Text = Email.Text

这就是我所需要的 - 如果您不关心强制使用用户名,我建议您连接到CreatingUser事件并检查电子邮件Text属性以确保其设置正确。

。也许其他东西在你设置后清除它。

FWIW,在我的代码隐藏中,我添加了几个属性,以便更容易访问这些文本框,尽管可能有更好的方法:)

    private TextBox UserName {
        get { return GetWizardControl<TextBox>("UserName"); }
    }

    private TextBox Email {
        get { return GetWizardControl<TextBox>("Email"); }
    }

    private T GetWizardControl<T>(string id) where T : Control {
        return (T)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl(id);
    }

答案 1 :(得分:0)

另一种解决方案是在电子邮件的必填字段验证器上设置Disabled属性 - 我是通过编辑aspx代码手动完成的。我没有完全测试这个替代方案,因为James Manning提供的答案为我工作。

答案 2 :(得分:0)

READONLY和DISABLED都删除了输入字段的功能,但程度不同。 READONLY锁定字段:用户无法更改值。 DISABLED做了同样的事情,但更进一步:用户不能以任何方式使用该字段,不突出显示文本进行复制,不选择复选框,不提交表单。事实上,如果提交表单,则甚至不会发送已停用的字段。

从这里采取:http://www.htmlcodetutorial.com/forms/_INPUT_DISABLED.html