将视图模型数据传递给javascript - 意外的标记ILLEGAL

时间:2016-02-24 22:11:22

标签: javascript c# asp.net-mvc

// controller
public ActionResult Index()
{
   var viewModel = new IndexViewModel();

   viewModel.Title = "It's Alive!!";

   return View(viewModel);
} 

// view
@model Project.Models.IndexViewModel

@section Script {
    <script src="~/Scripts/scripts.js"></script>
    <script>
        var options = {
            title: @Html.Raw(Model.Title)
        }

        application.init(options);
    </script>    
}

页面加载时会显示以下错误

Uncaught SyntaxError: Unexpected identifier

字符串中的撇号似乎导致了这个问题,但我不确定如何解决这个问题。非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

试试这个:

  title: '@Html.Raw(Json.Encode(Model.Title))'

答案 1 :(得分:0)

您可以在渲染之前使用Newtonsoft Json进行序列化。

@using Newtonsoft.Json

@section Script {
    <script src="~/Scripts/scripts.js"></script>
    <script>
        var options = {
            title: @Html.Raw(JsonConvert.SerializeObject(Model.Title))
        }

        application.init(options);
    </script>    
}

双引号输出

title: "It \"s Alive!!"

单引号输出

title: "It 's Alive!!"