Экранирование кавычек с помощью JavaScriptSerializer в ASP.NET MVC3

#javascript #jquery #asp.net-mvc #javascriptserializer

#javascript #jquery #asp.net-mvc #javascriptserializer

Вопрос:

У меня есть массив пользователей, которые я хочу передать в представление в виде массива javascript. Я делаю это с помощью JavaScriptSerializer, но строка, которую я получаю, содержит неэкранированные кавычки.

Действие контроллера

общедоступный виртуальный ActionResult Create(идентификатор int) {

         var viewModel = new AttendeeViewModel();

        var data = viewModel.GetMembershipUserList() ;

        viewModel.MeetingID = id;

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

        return View(viewModel);
    } 
  

Вид

  <script type="text/javascript">

   var tags = @Model.Users

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

ViewModel

  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;

    }
}
  

Вот какая модель.Пользователи выводятся как

 [amp;quot;DennisLearyamp;quot;,amp;quot;BobSagetamp;quot;,amp;quot;BillHicksamp;quot;]
  

Как мне экранировать кавычки с помощью JavaScriptSerializer или любого другого метода?

Ответ №1:

Использовать Html.Raw()

Возвращает разметку, которая не закодирована в HTML.

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

Комментарии:

1. Спасибо! Я продолжал видеть странные решения, в которых люди добавляли .replace (…), чтобы исправить эту проблему. Спасибо за подходящее!