如何解决这个“语法错误”?在剃须刀
本文关键字:语法错误 错误 语法 剃须刀 何解决 解决 | 更新日期: 2023-09-27 18:19:01
在我的Razor视图中有这样的代码
<script>
var JsModel = @Html.Raw(Json.Encode(CsModel));
</script>
这个工作很好。它将从控制器接收到的c#模型转换为JS对象,该对象稍后用于用标记和各种其他东西填充Google Map。
问题是,Visual Studio在这一行显示了一个大的红色语法错误,这让我发疯了。代码是完美的,模型总是非空的,编码总是有效的。但是Razor解析器,或者甚至是r#,我不确定是哪个,会出错,因为它似乎忽略了c#代码。所以它看到的只是var JsModel = ;
和抱怨。
有什么办法让我告诉它没关系吗?我在这里能做什么?
我们可以通过将原始json放入引号来解决这个问题,从而欺骗解析器,然后使用JQuery eval(或任何其他您喜欢的eval)将字符串转换为对象。
<script>
var JsModel = $.parseJSON('@Html.Raw(Json.Encode(CsModel))');
</script>
<script>
var JsModel = '@Html.Raw(Json.Encode(CsModel))'; //apply single quotes as shown
</script>
使用函数如下所示:
function SetMyValue(value){
return value;
}
var JsModel = SetMyValue(@Html.Raw(Json.Encode(CsModel)));
如下所示http://msdn.microsoft.com/en-us/library/gg480740(v=vs.118).aspx:-
这个方法使用IHtmlString类包装HTML标记显示未编码的HTML。
Razor转义系统不会转义IHtmlString类型的任何内容。Html.Raw()方法只是返回一个包含文本的HtmlString实例。
那么将它包装成函数并从那里返回就可以了