转换C#列表<;字符串>;到Javascript
我想将List类型的模型属性转换为在同一视图中可用的Javascript变量。 这是我的模型结构:转换C#列表<;字符串>;到Javascript,javascript,c#,json,asp.net-mvc,Javascript,C#,Json,Asp.net Mvc,我想将List类型的模型属性转换为在同一视图中可用的Javascript变量。 这是我的模型结构: public string Title { get; set; } public string Description { get; set; } public List<String> ImgLinks { get; set; } 但是我得到一个语法错误警告。有人能帮我转换成javascript数组和json吗?要消除“语法错误”,只需删除;最后 var imageLinks
public string Title { get; set; }
public string Description { get; set; }
public List<String> ImgLinks { get; set; }
但是我得到一个语法错误警告。有人能帮我转换成javascript数组和json吗?要消除“语法错误”,只需删除;最后
var imageLinks = @Html.Raw(Json.Encode(Model.ImgLinks))
尽管有警告,您的代码仍然可以正常运行
如果有人感兴趣,这里有一种不同的解决方案。您可以在razor集合中循环并将值存储在Javascript数组中,如下所示
<script type="text/javascript">
var myArray = [];
@foreach (var link in Model.ImgLinks)
{
@:myArray.push("@link");
}
</script>
var myArray=[];
@foreach(Model.ImgLinks中的var链接)
{
@:myArray.push(“@link”);
}
有一个更优雅的解决方案。您需要将列表序列化为JSON:
var imageLinks = @Json.Encode(Model.ImgLinks); // <- annoying syntax error
您可以找到有关修复此语法错误的详细信息。您收到了哪条警告?警告是syntax errortry JSON.parse('@Html.Raw(JSON.Encode(Model.ImgLinks)));呈现页面中的这一行实际上是什么样子的?现在,我没有收到语法错误警告。我想我之前尝试过这个,但我忘记了JSON.parse使用字符串作为参数。谢谢@shekharpankaja:before myArray是什么意思?这是在razor for loop中引用javascript变量的一种方式吗?它说“这一行不是以C#的形式执行的”,应该在替换后发出(在本例中是JS)。它可能不一定是可变的。“输出一行包含纯文本或不匹配HTML标记的内容…”因此@:开始一行与开始一行几乎是相反的。我从来没有说过它没有。我正在纠正一个错误的断言,即@:与变量有关。事实并非如此。它与输出中发出的文本有关。我没有阅读您稍后所做的编辑。你的评论以前没有这些信息。你当然是对的:)
var imageLinks = @Json.Encode(Model.ImgLinks); // <- annoying syntax error
function set(value) {
return value;
}
var imageLinks = set(@Json.Encode(Model.ImgLinks));