foreach或ToArray在section中,带有js变量error
本文关键字:带有 js 变量 error ToArray section foreach | 更新日期: 2023-09-27 18:09:24
我试图在mvc 4中的section
中做foreach
。我只是不能让它得到js变量的作用域。所以这里发生的是它不能识别foreach
内部的图像。如何解决这个问题?
@section Scripts {
<script type="text/javascript">
var images = "";
@foreach (var item in Model.Images)
{
//it does not know about the images varable here
images += string.Format("[{0}/{1}],", "path", item);
}
</script>
}
I'm also try this without success
@section Scripts {
<script type="text/javascript">
//statement is not terminated
var images = @Model.Images.ToArray()
console.log(images);
</script>
}
编辑
我只是在控制器中填充图像名称然后传递给视图。
public class ImageViewModel
{
public string[] Images { get; set; }
}
你需要用@:
切换回HTML(在你的情况下是JS),然后再次回到razor
@section Scripts {
<script type="text/javascript">
var images = "";
@foreach (var item in Model.Images)
{
//it does not know about the images varable here
@:images += "@string.Format("[{0}/{1}],", "path", item)";
}
</script>
}
否则它会假设你的images
是一个服务器端c#变量,而不是客户端内容。
要回答你的评论,你要这样结束:
<script type="text/javascript">
var images = "";
images += "imagename1";
images += "imagename2";
images += "imagename3";
images += "imagename4";
</script>
所以从那个往回看,这是伪脚本。
<script type="text/javascript">
var images = "";
// LOOP START HERE
images += "@SERVER VALUE HERE";
// LOOP END HERE
</script>
如果你的代码看起来像@foreach{}
代码块,它会认为它是服务器端代码。
@foreach (var item in Model.Images)
{
// This "must" be a local images variable as it is in a Razor code block!
images += @string.Format("[{0}/{1}],", "path", item); // Wrong!
}
@:
转义序列告诉razor将以下内容视为标记而不是代码。然后@(expression)
将服务器端值注入到该客户端标记中。客户端标记常量需要引号。
刮刀版本:
@section Scripts {
<script type="text/javascript">
var images = "@string.Join(",", Model.Images)";
console.log(images);
</script>
}