如何使用jquery访问视图中的模型对象?

时间:2013-03-18 07:04:43

标签: jquery asp.net-mvc razor

我只是在视图中使用razor语法的asp.net mvc新手,我想知道如何在jQuery例程中使用模型对象来设置img src?

例如:

 setSourceImage()
    {
       @foreach(var myPaths in Model)
       {
        @: jQuery('#sampleImage').attr('src',myPaths.imgPath)
       }
    }

我知道语法错误,但从某种意义上说,这就是我想要实现的目标。

感谢。

1 个答案:

答案 0 :(得分:0)

是的,语法错误。我建议您使用Json.Encode方法安全地序列化您感兴趣的模型的属性:

<script type="text/javascript">
    function setSourceImage() {
        var imageSources = @Html.Raw(Json.Encode(Model.Select(x => x.imgPath)));
        for (var i = 0; i < imageSources.length; i++) {
            jQuery('#sampleImage').attr('src', imageSources[i])
        }
    }
</script>

可能会呈现为:

<script type="text/javascript">
    function setSourceImage() {
        var imageSources = ['/images/img1.jpg', '/images/img2.jpg'];
        for (var i = 0; i < imageSources.length; i++) {
            jQuery('#sampleImage').attr('src', imageSources[i])
        }
    }
</script>

显然,为了实现这一点,模型的imgPath属性应该包含服务器上图像的绝对或相对URL。它不应包含图像的物理位置,如c:\inetpub\wwwroot\myapp\images\img1.jpg。如果是这种情况,则必须在渲染视图之前在服务器上转换此属性。