在一个页面中包含多个视图

时间:2011-03-17 07:32:48

标签: asp.net-mvc views controllers nested

我有一个控制器,它可以呈现一个视图(〜/ Views / Component / Create.aspx)没问题。

显示此视图时,我想要:

(1)当用户点击链接时,在模态弹出窗口中(这里没问题),显示一个视图(不是PARTIAL VIEW),但是来自(〜/ Views / TransportType / Index.aspx)的完整aspx视图

为什么呢?因为(〜/ Views / TransportType / Index.aspx)的方式应该是100%,它本身会从TransportType控制器渲染部分视图。因此,在一个屏幕中,我为用户提供(插入/更新/编辑/删除)的功能,而无需进入各种屏幕。

(2)在(〜/ Views / Component / Create)中我会满足于渲染<%= Html.RenderAction(“Index”,“TransportType”)%>我可以使用JavaScript切换div中的页面中的某个位置。只有当我尝试使用这种方法时,我才得到CS1502:'System.IO.TextWriter.Write(char)'的最佳重载方法匹配有一些无效的参数。

注意:我可以毫无问题地直接浏览www.MySite.com/TransportType/Index,但如果我尝试使用上面#2中描述的方法,我会得到上面的后续错误。

我已经尝试了一切。我花了一整天的时间来试图解决这个问题。我可以很容易地实现一个快速解决方案,但它会否定整个卖点我说服我的公司相对于MVC及其优于代码隐藏的优势。请帮助或者我可能必须回滚到ASP.NET背后的代码世界。

底线:“有没有人知道如何在视图中呈现视图?或者我问的问题是错误的。

以下是一些代码:

1 个答案:

答案 0 :(得分:1)

如果使用jquery-ui,则可以使用对话框方法。

e.g:

<a href="<%=Url.Action("Index","TransportType") %>" id="transports">Types</a>
<div id="window"></div>
<script type="text/javascript">

$(document).ready(function(){
    $("#transports").click(function(){
        $("#window").load(this.href).dialog({title:"transport list"});
        return false;
    });
});
</script>

编辑:要使用Html.RenderAction,请不要先放置=,然后将;放在最后,因为它没有返回任何内容:<% Html.RenderAction("Index", "TransportType"); %>