2013-02-21 78 views
21

Tôi hiện đang phát triển một trang đăng ký. Khi người dùng đã tồn tại, tôi muốn cung cấp các liên kết mật khẩu đăng nhập và đặt lại cho người dùng trong thông báo lỗi cho trường email. Trong bộ điều khiển tôi có:Làm cách nào để hiển thị html trong thông báo xác thực trong ASP.NET MVC?

[HttpPost] 
public ActionResult Register(RegistrationModel registration) 
{ 
    ... 

    if(userExists) 
    { 
     const string errorMessage = "User already exist. You can <a href="/account/login">login</a> ..."; 
     ModelState.AddModelError("Email", errorMessage); 
     return View("Register", registration); 
    } 
} 

Nhưng khi tôi cố gắng đưa ra thông báo này, tôi không hiểu những gì tôi mong đợi. Tôi nhận được đánh dấu html như văn bản thuần túy. Tôi đã cố gắng:

@using(Html.BeginForm()) 
{ 
<div>@Html.TextBoxFor(m => m.Email)    
@{ 
    @Html.ValidationMessageFor(m => m.Email) 

    ... 

    @Html.Raw(Html.ValidationMessageFor(m => m.Email)) 

    ... 

    string validationMessage = Html.ValidationMessageFor(m => m.Email).ToString(); 
    @Html.Raw(validationMessage) 

    ... 

    string validationMessage = Html.ValidationMessageFor(m => m.Email).ToHtmlString(); 
    @Html.Raw(validationMessage) 

    ... 

    string validationMessage = Html.ValidationMessageFor(m => m.Email).ToString(); 
    @(new HtmlString(validationMessage)) 

    ... 

    string validationMessage = Html.ValidationMessageFor(m => m.Email).ToHtmlString(); 
    @(new HtmlString(validationMessage)) 

    ... 

    string validationMessage = Html.ValidationMessageFor(m => m.Email).ToString(); 
    @(new MvcHtmlString(validationMessage)) 

    ... 

    string validationMessage = Html.ValidationMessageFor(m => m.Email).ToHtmlString(); 
    @(new MvcHtmlString(validationMessage)) 

} 
</div> 
} 
+0

Thử '@ (new HtmlString (mystring))' – jwillmer

+0

@jwillmer, đã thử ... Se chỉnh sửa của tôi ... cùng một kết quả ... – Dmytro

Trả lời

45
@Html.Raw(HttpUtility.HtmlDecode(Html.ValidationMessageFor(m => m.Email).ToHtmlString())) 

Không phải là khá mặc dù

+0

Cảm ơn, nó đã hoạt động ... – Dmytro

+1

Điều đó đang được nói, trong hầu hết các trường hợp đó có thể là phong cách tốt hơn để thông báo lỗi xác thực của bạn là thông báo lỗi xác thực và hiển thị các tùy chọn bổ sung cho người dùng một cách riêng biệt. – xr280xr

0

Tìm thấy bài đăng này trong khi tìm hiểu về bản thân mình bằng ASP.NET Core.

Những gì tôi đã kết thúc làm được thêm một phần của tôi thông điệp xác nhận của tôi trong modelstate.AddError(), và riêng thêm vào ViewData bit rằng có Html tôi muốn làm, như vậy:

ViewData [" myKey "] =" My html ";

Nó cảm thấy khá xấu xí và có thể có cách tốt hơn để làm điều đó, nhưng đối với nhu cầu rất hạn chế của tôi, điều này phù hợp với các hóa đơn độc đáo.

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