2012-01-16 36 views
5

我已经使用asp.net web表单很多,但这是我第一个ASP.Net MVC应用程序。我想要做的是使用子视图来渲染一些控件,这些控件是相对独立于页面显示和操作的。例如,我有一个日历“小工具”,它使用服务器端逻辑在每次点击日期时显示事件列表,而完全独立于页面其余部分的处理。asp.net mvc子动作

在Web窗体中,我可以创建一个ASCX(Web用户控件)。当在控件中点击一个日期时,整个页面被回传,但我可以将点击处理放在日历控件中;页面的其余部分会自动进行往返处理,而无需使用任何特定的逻辑来处理日历控件的回发。

如果我将“日期点击”操作路由到日历控制器,它不知道它所嵌入的页面,因此它只能绘制日历,而不是页面的其余部分。我能想到的唯一解决方法(除了ajax)是让拥有页面的控制器处理所有日历点击操作,并在呈现整个页面的视图之前将它们传递到日历控制器上

希望我错过了一些东西明显。

回答

3
+1

是的,这个。另外,如果您需要像母版页一样重新使用布局,请尝试构建模板,这本质上是一回事。 – 2012-01-16 21:28:50

+0

感谢您的回复,我已经查看了网址并阅读了一些内容,但仍然有些东西缺失。我了解如何使用部分视图和子操作来初始化呈现日历控件的视图,但是如何在日历中的某个日期点击时发生什么?这个点击动作应该可能会发送到日历控制器(这样它可以检索该日期的项目),但日历控制器不能渲染页面的其余部分吗?我所见过的所有关于子视图的例子只生成静态内容或导航链接,而不是“回发”控件 – Andy 2012-01-16 21:55:27

+0

您可能需要使用ajax来更新页面的日历部分 – 2012-01-16 23:03:02

-8

你可以使用iframe显示主网页内的日历。您的主页可以有网址http://example.com/main,iframe可以有网址http://example.com/calendar/today。通过在链接上设置target属性,iframe中的链接可以重新加载iframe,或者可以重新加载主页面。同样,主页上的链接可以定位iframe。

由于主页面和iframe都来自您的服务器,因此不会有任何跨域问题,因此您可以执行任何所需的脚本。