c# page Comment puis-je afficher le code HTML dans un message de validation dans ASP.NET MVC?




web page razor (3)

Je développe actuellement une page d'inscription. Lorsque l'utilisateur existe déjà, je souhaite fournir un login et réinitialiser les liens de mot de passe pour l'utilisateur dans un message d'erreur pour le champ email. Dans le contrôleur j'ai:

[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);
  }
}

Mais lorsque j'essaie de diffuser ce message, je n'obtiens pas ce que j'attends. Je reçois un balisage HTML comme du texte brut. J'ai déjà essayé :

@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>
}

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

N'est pas joli si



J'ai trouvé ce message tout en découvrant moi-même comment utiliser ASP.NET Core.

J'ai fini par ajouter ma partie de mon message de validation dans modelstate.AddError () et ajouter séparément à ViewData le bit contenant le code HTML que je voulais rendre, comme ceci:

ViewData ["myKey"] = "Mon HTML";

C'est plutôt moche et il y a probablement de meilleures façons de le faire, mais pour mes besoins très limités, cela convient parfaitement.





razor