我经常使用asp.net Web表单,但这是我的第一个ASP.Net MVC应用程序。我想要做的是使用子视图来呈现一些控件,这些控件独立于页面显示和操作(相对)。
例如,假设我有一个日历“小工具”,它使用服务器端逻辑在每次点击日期时显示事件列表,完全独立于页面其余部分的处理。
在网络表单中,我可以创建一个ASCX(Web用户控件)。在控件中单击日期时,整个页面将被回发,但我可以将单击处理放在日历控件中;页面的其余部分是自动往返的,无需使用任何特定的逻辑来处理日历控件的回发。
使用MVC如果我将“日期点击”操作路由到日历控制器,这不知道它嵌入的页面,因此它只能绘制日历,而不是页面的其余部分。我能想到的唯一解决方法(除了ajax之外)是让拥有页面的控制器处理所有日历点击操作并将其传递到日历控制器上,然后再渲染整个页面的视图
希望我错过了一些明显的东西。
答案 0 :(得分:3)
查看部分视图和RenderAction。
以下是一些可以帮助您入门的网址
http://rachelappel.com/razor/partial-views-in-asp-net-mvc-3-w-the-razor-view-engine/
http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx
http://devlicio.us/blogs/derik_whittaker/archive/2008/11/24/renderpartial-vs-renderaction.aspx
答案 1 :(得分:-9)
您可以使用iframe在主页面中显示日历。您的主页可以包含网址http://example.com/main
,iframe可以包含网址http://example.com/calendar/today
。通过在链接上设置target
属性,iframe中的链接可以仅重新加载iframe,或者可以重新加载主页面。同样,主页面上的链接可以定位iframe。
由于主页面和iframe都来自您的服务器,因此不存在任何跨域问题,因此您可以执行所需的任何脚本。