#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 (…), чтобы исправить эту проблему. Спасибо за подходящее!