将模型值分配给JavaScript变量MVC4

将模型值分配给JavaScript变量MVC4,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,我正在尝试制作一个图像幻灯片,并通过模型中的列表传递图像的URL List<string> 我的问题是,如何将此URL列表分配给上述变量,通常我可以这样做: image1.src="value.jpg" 如何在JavaScript中使用Razor分配值?此Razor代码将创建一个图像对象,其中包含字符串列表中每个元素的索引,并将设置其src属性 <script> @for (var idx = 1; idx <= Model.ListOfImages.L

我正在尝试制作一个图像幻灯片,并通过模型中的列表传递图像的URL

List<string>
我的问题是,如何将此URL列表分配给上述变量,通常我可以这样做:

image1.src="value.jpg"

如何在JavaScript中使用
Razor
分配值?

此Razor代码将创建一个图像对象,其中包含字符串列表中每个元素的索引,并将设置其src属性

<script>
    @for (var idx = 1; idx <= Model.ListOfImages.Length; ++ i) {
       <text>
           var image@(idx) = new Image();
           image@(idx).src = '@Model.ListOfImages[idx]';
       </text>
    }
</script>


@对于(var idx=1;idx有两种方法可以解决此问题:

  • 使用Razor生成JavaScript

    <script type="text/javascript">
    var images = [], image;
    @foreach (var image in ListOfImages)
    {
        image = new Image();
        image.src = @image.url;
        images.push(image);
    }
    </script>
    
    
    var-images=[],image;
    @foreach(ListOfImages中的var图像)
    {
    图像=新图像();
    image.src=@image.url;
    图像。推送(图像);
    }
    
  • 使用Razor生成HTML,然后让JavaScript使用HTML进行幻灯片放映

    <div class="slideshow">
        <ol>
        @foreach (var image in ListOfImages)
        {
            <li><img src="@image.url"></li>
        }
        </ol>
        <a href="#" class="slideshow-prev">Prev</a>
        <a href="#" class="slideshow-next">Next</a>
    </div>
    <script type="text/javascript">
        // some imaginary jQuery plugin to create a slideshow
        $(".slideshow").slideshow();
    </script>
    
    
    @foreach(ListOfImages中的var图像)
    {
    
  • } //一些虚构的jQuery插件来创建幻灯片 $(“.slideshow”).slideshow();

  • 我偏爱解决方案#2。如果可能的话,我尽量避免让服务器端模板语言以多种语言生成代码。在解决方案#2中,Razor只是生成HTML。

    你能解释for循环内部发生了什么吗确保for循环内部为列表中的每个项目生成两个javascript语句1)定义图像对象(2)将其src属性设置为列表中的值。标签是剃须刀指令。好极了。。我去看看
    <script type="text/javascript">
    var images = [], image;
    @foreach (var image in ListOfImages)
    {
        image = new Image();
        image.src = @image.url;
        images.push(image);
    }
    </script>
    
    <div class="slideshow">
        <ol>
        @foreach (var image in ListOfImages)
        {
            <li><img src="@image.url"></li>
        }
        </ol>
        <a href="#" class="slideshow-prev">Prev</a>
        <a href="#" class="slideshow-next">Next</a>
    </div>
    <script type="text/javascript">
        // some imaginary jQuery plugin to create a slideshow
        $(".slideshow").slideshow();
    </script>