2011-04-23 36 views
8

Tengo una matriz de usuarios que quiero pasar a una vista como una matriz de JavaScript. Estoy haciendo esto a través de JavaScriptSerializer, pero la cadena que obtengo tiene comillas sin guardar en él.Escapar citas con JavaScriptSerializer en ASP.NET MVC3

Action Controller

ActionResult pública virtual Crear (int id) {

 var viewModel = new AttendeeViewModel(); 

     var data = viewModel.GetMembershipUserList() ; 

     viewModel.MeetingID = id; 

     viewModel.Users = new JavaScriptSerializer().Serialize(data.ToArray()); 

     return View(viewModel); 
    } 

Ver

<script type="text/javascript"> 

    var tags = @Model.Users 

    $(document).ready(function() { $("#mytags").tagit({ availableTags:tags}); }); 
</script> 

modelo de vista

public class AttendeeViewModel 
{ 

    public int AttendeeId { get; set; } 
    public string Name { get; set; } 
    public int MeetingID { get; set; } 
    public string Users { get; set; } 

    public List<string> GetMembershipUserList() 
    { 
     List<string> userNames = new List<string>(); 
     foreach (MembershipUser user in Membership.GetAllUsers()) 
     { 
      userNames.Add(user.UserName); 
     } 

     return userNames; 

    } 
} 

Th es lo que se Model.Users se emite como

[&quot;DennisLeary&quot;,&quot;BobSaget&quot;,&quot;BillHicks&quot;] 

¿Cómo puedo escapar de las cotizaciones con JavaScriptSerializer, o cualquier otro método?

Respuesta

21

Uso Html.Raw()

devoluciones de marcado que no es HTML codificado.

var tags = @Html.Raw(Model.Users); 
+0

Muchas, muchas, muchas gracias. – MrBliz

+0

¡Gracias! Seguí viendo soluciones extrañas donde las personas agregarían un .replace (...) para solucionar este problema. Gracias por el apropiado! –