我特灵通过剃刀视图声明列表到一个javascript var:
List<testObj> mylist= new List<testObj>();
<div class="listboxFilterItem" onclick=' setList(@(Html.Raw(Json.Serialize(mylist))))'> <div style="padding-top:2px; float: left;">Test</div> <div class="listboxChosenFilter">*</div> </div>
我的JavaScript代码看起来像这样:
function setList(list) {
var jsonObj = JSON.parse(list);
console.log(jsonObj);
}
</script>
但是我得到了ILLEGAL token异常,因为我的引号-->“data”<--。
你如何将剃刀视图声明的列表传递给JavaScript函数?
4条答案
按热度按时间hgc7kmma1#
尝试替换onclick代码。
替换
与
tvokkenx2#
我不确定你使用的是哪个MVC/.NET版本,但你有没有尝试过使用
JavaScriptSerializer
而不是JSON?options javascript变量应该包含myList C#变量中的任何项的数组。
1zmg4dgp3#
我有一个模型的强类型Razor cshtml视图,属性为
ICollection<Options>
。我正在寻找如何将列表/列表列表/对象列表传递到JavaScript中,并在某些地方看到“出于安全原因,不要使用@Html.Raw()
”。在**.NET Core 3.1**中对我有用的是只使用
System.Text.Json
命名空间的@Json.Serialize()
。所以在我的例子中,我将它用作JavaScript变量值:现在我有了一个JavaScript对象列表。
注意:项目使用EntityFramework Core存储模型(及其Options)。每个Option对象都有一个返回父模型的引用导航属性。这导致序列化期间出现JSON Self Referencing Loop Exceptions。最简单的解决方案是在序列化过程中不包括这些引用,在Option对象的模型引用导航属性上使用
[JsonIgnore]
属性。nwwlzxa74#
对我很有效