2010-05-13 88 views
5

Tôi khá mới với ASP.NET và C# Tôi đã dành cả ngày để học những điều cơ bản của nhà cung cấp thành viên ASP.NET. Tôi đã xây dựng tất cả các trình xác nhận hợp lệ nhưng đang gặp khó khăn khi xuất thông báo lỗi trên trang.Làm thế nào để hiển thị thông báo lỗi xác thực trên trang 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 ?? 

} 

Cách tốt nhất để xuất kết quả varible lên trang như tôi đã dựa vào ASP được tích hợp sẵn: Trình xác thực cho đến bây giờ là gì.

+0

Đây có phải là ASP.NET MVC hoặc WebForms không? Ngoài ra, bạn có bất kỳ điều khiển cụ thể nào trên trang mà bạn muốn hiển thị trạng thái không? –

+0

ASP.NET MVC, tôi đã không đặt bất kỳ điều khiển tại chỗ cho nó như tôi là một chút không chắc chắn những gì điều khiển nó có thể ghi vào. có phù hợp không? hoặc tôi đang đi sai hướng. – Yardstermister

+0

Lớp nào mà phương thức riêng tư đó thuộc về - bộ điều khiển? Bạn có thể đăng các mã cho hành động điều khiển được gọi là nó? – Charlino

Trả lời

8

MVC

Xem một ví dụ điển hình ...

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

Về cơ bản, bạn cần phải tuyên truyền các lỗi nhắn và cũng là thực tế rằng có lỗi để xem của bạn từ bộ điều khiển của bạn. ModelStateDictionary.AddModelError() sẽ xử lý cả hai nhiệm vụ này cho bạn.

Sau đó, bạn có thể sử dụng ValidationExtensions.ValidationSummary() để hiển thị.

Webforms

Bạn không sử dụng một validator cho việc này. Hầu hết mọi người không. Một DIV theo kiểu đơn giản sẽ hoạt động tốt.

ví dụ:

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

Lưu ý thông số runat.

Bây giờ trong bạn code-behind bạn có thể thử

errorMessageDiv.innerHTML = "some error message"; 

Nếu bạn thực sự muốn sử dụng một kiểm validator ...

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

Về cơ bản bạn thiết lập ErrorMessageisValid tham số trình xác thực có liên quan trong mã phía sau. ValidationSummary có liên quan sẽ hiển thị thông báo lỗi.

+0

Điều này là sai đối với ASP.NET MVC - nhưng bạn không biết rằng khi đăng câu trả lời, vì vậy tôi sẽ không bỏ phiếu. – Charlino

+0

@Charlino: Tôi thấy việc làm rõ MVC. AFAIK quá trình cơ bản nên làm việc với MVC. Ví dụ. http://stackoverflow.com/questions/446533/what-is-the-status-of-runatserver-tags-in-asp-net-mvc. Nhưng tôi sẽ cập nhật. – kervin

+0

Tôi thực sự thích câu trả lời này :) –

0

Chỉ cần thêm điều khiển nhãn asp vào trang và sau đó đặt thuộc tính văn bản của nó bằng giá trị trả về.

+0

Điều này là sai đối với ASP.NET MVC - nhưng bạn không biết rằng khi đăng câu trả lời, vì vậy tôi sẽ không bỏ phiếu. – Charlino

0

Nếu sử dụng WebForms, bạn có thể sử dụng điều khiển Nhãn và đặt thuộc tính '.Text' của nó với kết quả của bạn. Hoặc điều khiển Bảng điều khiển. Hoặc một UserControl đặc biệt để xuất các thông báo lỗi (đây là những gì tôi làm) mà bạn có thể thêm vào MasterPage của bạn.

+1

Điều này là sai đối với ASP.NET MVC - nhưng bạn không biết rằng khi đăng câu trả lời, vì vậy tôi sẽ không bỏ phiếu. – Charlino

0

Bạn có thể sử dụng tóm tắt xác thực hoặc bạn có thể sử dụng điều khiển nhãn để hiển thị thông báo lỗi

Các vấn đề liên quan