Asp.net 如何从codebehind(CreateUserWizard控件,使用TemplateLayout)设置错误消息?

Asp.net 如何从codebehind(CreateUserWizard控件,使用TemplateLayout)设置错误消息?,asp.net,createuserwizard,Asp.net,Createuserwizard,用户是使用标准的SQLMemberShipProvider创建的 我已经尝试捕捉MembershipCreationStatus以及异常,当我调试代码时,我会找到设置消息的方法。我使用CreateUserWizardControl上的属性设置它们,但是当呈现页面时,会显示默认值;不是我刚才设置的(自定义)消息 我正在使用的向导只有一个步骤,但我真的很想知道我做错了什么。我花了一整天的时间试图让这个巫师乖乖听话 寻求帮助或指导 谢谢, 亚当 如果您只使用静态字符串,那么在发生错误时为什么要更改值

用户是使用标准的SQLMemberShipProvider创建的

我已经尝试捕捉MembershipCreationStatus以及异常,当我调试代码时,我会找到设置消息的方法。我使用CreateUserWizardControl上的属性设置它们,但是当呈现页面时,会显示默认值;不是我刚才设置的(自定义)消息

我正在使用的向导只有一个步骤,但我真的很想知道我做错了什么。我花了一整天的时间试图让这个巫师乖乖听话

寻求帮助或指导

谢谢, 亚当


如果您只使用静态字符串,那么在发生错误时为什么要更改值


如果在控件的“属性”面板上设置了值,则属性将显示在该面板上。ASP.NET WebForms有时会非常糟糕。这是我使用的解决方案

步骤1:将另一个Label控件添加到页面顶部:

<asp:Label ID="lblErrorMessage" Text="" runat=server CssClass="failureNotification"></asp:Label>

注意CssClass

步骤2:发生错误时,将错误消息放在该标签中

try
{
    //Do stuff here
}
catch (Exception ex)
{
    lblErrorMessage.Text = string.Format("An error has occurred. Please tell tech support that you saw this: <br />{0}: {1}", ex.GetType(), ex.Message);
    e.Cancel = true;
}
试试看
{
//在这里做事
}
捕获(例外情况除外)
{
lblErrorMessage.Text=string.Format(“发生错误。请告诉技术支持,您看到了以下内容:
{0}:{1}”,例如GetType(),ex.Message); e、 取消=真; }

当发生错误时,您会看到一条漂亮的格式化错误消息。它不在RegisterUserWizard控件内,但用户无法识别。胡说八道,但它是有效的。ASP.NET MVC要优雅得多。

是否有理由设置错误消息属性以响应错误,而不是在加载页面时作为某些初始化过程的一部分?
<asp:Label ID="lblErrorMessage" Text="" runat=server CssClass="failureNotification"></asp:Label>
try
{
    //Do stuff here
}
catch (Exception ex)
{
    lblErrorMessage.Text = string.Format("An error has occurred. Please tell tech support that you saw this: <br />{0}: {1}", ex.GetType(), ex.Message);
    e.Cancel = true;
}