如何在不使用控制器的情况下动态加载局部视图?

时间:2013-01-22 14:16:41

标签: ajax asp.net-mvc

有很多html + js代码。目标是只在特定的按钮点击时加载和显示它,因此,不需要每次都预先加载它。

通常,我们可以使用jquery / ajax动态包含局部视图,但据我所知它需要一个控制器。在这种情况下,不需要控制器,因为数据是静态的。

所以,问题是:特定事件(如按钮点击)是否可以包含部分视图而无需通过控制器?

我们尝试的是给ajax请求一个局部视图的地址。但它没有帮助。

<div class="reportWindow"></div>

<script type="text/javascript">
    $("#feedback").click(function () {

        $.ajax({
            url: "@Url.Content("_Feedback")",
            type: 'GET',
            cache: false,
            success: function (result) {
                $("#reportWindow").html(result);
            }
        });
    });    
</script>

1 个答案:

答案 0 :(得分:2)

具有cshtml扩展名的部分视图仍然是Razor视图,即使其中的内容是静态的,服务器仍然需要读取它并将其内容转换为html(即使这意味着复制它)完全按照它的方式发送回去)

你需要的是一个html文件,你可以使用javascript或jQuery动态加载:

$("#feedback").click(function () {
    $("#reportWindow").load('feedback.html'); 
});

请注意,这仍然会向服务器询问feedback.html,通常这与任何路由都不匹配,然后IIS将通过查找名为feedback.html的静态页面来解析请求!