AllowHtml no funciona para el sitio ASP.Net Mvc 3

Estamos tratando de usar la decoración [AllowHtml] en una de nuestras propiedades ViewModel para evitar el YSOD:

Se detectó un valor Request.Form potencialmente peligroso del cliente (RequestText ="<br>").

cuando intentamos enviar texto html, como:<br>. Entonces queremos usar Server.HtmlEncode dentro de la acción del controlador para evitar ataques, pero cuando decoramos la propiedad con[AllowHtml] no tiene ningún efecto, y si intentamos usar[ValidateInput(false)] en la acción del controlador, tampoco tiene ningún efecto. Vimos unStackOverflow Post diciendo que en MVC 3 RC2 que tienes que agregar:

ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider (); a la global.asax

También lo intentamos, aunque estamos usando la versión de lanzamiento de MVC 3, no RC2, pero eso tampoco tuvo ningún efecto. ¿Alguien sabe cómo arreglar esto

Modelo

namespace UI.Models.ViewModel
{
    public class CustomerRequestSupport
    {
        /// <summary>
        /// Gets or Sets the textual description entered by the Customer for 
        /// the support requested.
        /// </summary>
        [AllowHtml]
        public string RequestText { get; set; }
    }
}

Controlador

    [HttpPost]
    [TabsActionFilter]
    public ActionResult RequestSupport(CustomerRequestSupport collection)
    {
        if (ModelState.IsValid)
        {

            Ticket ticket = new Ticket();

            ticket.Requestor = LoggedInCustomer;

            ticket.Summary = "General Support Ticket";
            ticket.Notes = Server.HtmlEncode(collection.RequestText);

            var errors = _ticketService.SubmitTicket(ticket);

            if (errors.Any())
            {
                ModelState.AddModelError("collection",
                    String.Format("An error has occurred in your Request for Support: " +
                    "{0} Please try again later or call the help desk " +
                    "for immediate assistance.",
                    errors.Aggregate((acc, st) => acc + " " + st)));
            }
            else
            {
                TempData["FlashMessage"] = String.Format("Your request for support has been " +
                        "submitted, the Ticket Number is: {0}.", ticket.TicketNumber);

                return AutoMapView<CustomerDetails>(View("Details", base.LoggedInCustomer));
            }
        }

        //needed for tabs to show
        ViewData.CustomerContactSet(base.LoggedInCustomer);

        return View();

Ver

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"     Inherits="System.Web.Mvc.ViewPage<UI.Models.ViewModel.CustomerRequestSupport>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
 Request Support
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="PageTitle" runat="server">
 Request Support
</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm())
   { %>
    <%= Html.ValidationSummary() %>
    <h2>Enter a description of the support needed</h2>
    <%: Html.TextAreaFor( m => m.RequestText, 4, 90, null) %>
    <input type="submit" value="Submit" />
<% } %>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="JavaScriptContent" runat="server">
</asp:Content>

Respuestas a la pregunta(4)

Su respuesta a la pregunta