2010-05-13 157 views
5

我对ASP.NET和C#相当新颖我已经花了一天时间学习ASP.NET成员资格提供程序的基础知识我已经构建了所有的验证程序,但在页面上输出错误消息时被卡住了。如何在ASP.NET MVC页面上显示验证错误消息?

private void LogCreateUserError(MembershipCreateStatus status, string username) 
{ 
    string reasonText = status.ToString(); 

    switch (status) 
    { 
     case MembershipCreateStatus.DuplicateEmail: 
     case MembershipCreateStatus.DuplicateProviderUserKey: 
     case MembershipCreateStatus.DuplicateUserName: 

      reasonText = "The user details you entered are already registered."; 
      break; 

     case MembershipCreateStatus.InvalidAnswer: 
     case MembershipCreateStatus.InvalidEmail: 
     case MembershipCreateStatus.InvalidProviderUserKey: 
     case MembershipCreateStatus.InvalidQuestion: 
     case MembershipCreateStatus.InvalidUserName: 
     case MembershipCreateStatus.InvalidPassword: 

      reasonText = string.Format("The {0} provided was invalid.", status.ToString().Substring(7)); 
      break; 
     default: 
      reasonText = "Due to an unknown problem, we were not able to register you at this time"; 
      break; 

    } 

    //CODE TO WRITE reasonText TO THE HTML PAGE ?? 

} 

什么是最好的方式输出变量的结果到页面上,因为我依赖内置的ASP:Validators直到现在。

+0

这是使用ASP.NET MVC或Web表单?另外,您是否在页面上有任何特定的控件,您希望显示状态? – 2010-05-13 22:52:53

+0

ASP.NET MVC,我还没有放置任何控件,因为我有点不确定它可以写入什么控件。 是否合适?还是我在错误的方向漂流? – Yardstermister 2010-05-13 22:57:28

+0

私人方法属于哪一类 - 控制器?你可以发布控制器操作的代码来调用它吗? – Charlino 2010-05-13 23:04:41

回答

8

MVC

见一个很好的例子......

ASP.NET MVC Html.ValidationSummary(true) does not display model errors

基本上,你需要传播错误消息并且也是事实,有错误从您的控制器中查看。 ModelStateDictionary.AddModelError()将为您处理这两项任务。

然后您可以使用ValidationExtensions.ValidationSummary()来显示。

Web表单

你不使用验证这一点。大多数人不会。一个简单的风格DIV应该很好。

例如。

<div id="errorMessageDiv" runat="server"></div> 

通知的RUNAT参数。

现在在你的后台代码,你可以尝试

errorMessageDiv.innerHTML = "some error message"; 

如果你真的想使用验证结账......

http://weblogs.asp.net/ashicmahtab/archive/2008/12/12/putting-messages-into-a-validationsummary-control-from-code.aspx

基本上你设定的的ErrorMessageisValid参数后面的代码中的相关验证程序。相关的验证摘要应显示错误消息。

+0

这是错误的ASP.NET MVC - 但你不知道,当发布答案,所以我不会投票。 – Charlino 2010-05-13 23:05:45

+0

@Charlino:我看到了MVC的澄清。 AFAIK的基本过程应该与MVC一起工作。例如。 http://stackoverflow.com/questions/446533/what-is-the-status-of-runatserver-tags-in-asp-net-mvc。但我会更新。 – kervin 2010-05-13 23:10:48

+0

我真的很喜欢这个答案:) – 2010-05-14 05:18:23

0

只需在页面中添加一个asp标签控件,然后用返回值设置它的文本属性。

+0

这对于ASP.NET MVC是错误的 - 但你不知道在发布答案时,所以我不会投票。 – Charlino 2010-05-13 23:06:30

0

如果使用WebForms,则可以使用Label控件并将其结果的'.Text'属性设置为它。或者一个Panel控件。或专门用于输出错误消息的UserControl(这是我所做的),您可以添加到您的MasterPage。

+1

这对于ASP.NET MVC是错误的 - 但你不知道在发布答案时,所以我不会投票。 – Charlino 2010-05-13 23:06:50

0

您可以使用验证摘要或者你可以使用一个标签控件来显示错误消息

相关问题