在ASP.NET MVC3中,使用JavaScriptSerializer转义引号

9

我有一个用户数组,我希望将其作为JavaScript数组传递到视图中。我是通过JavaScriptSerializer来实现的,但字符串中存在未转义的引号。

控制器动作

public virtual ActionResult Create(int id) {

        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>

视图模型

 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;

    }
}

这就是Model.Users的输出结果

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

我该如何使用JavaScriptSerializer或其他方法转义引号?

1个回答

25

使用Html.Raw()

返回未进行HTML编码的标记。

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

谢谢!我一直看到人们添加.replace(...)来解决这个问题,但你提供的方法更为合适。 - Sergey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接