我有一个Ajax ActionLink,通常只返回一个PartialView(它只是一个UserControl ascx文件)但是,我的需求已经改变,我想要返回另一个占据我不同区域的PartialView(总共两个PartialViews)页面...当然我不能连续两次调用“返回PartialView(”UserControl.ascx“)”所以我的问题是什么是一个优雅的工作呢?
如何在没有将这两个PartialView包装在更大的父视图中的情况下返回两个PartialView?我不愿意这样做,因为这两个项目都在html表的不同部分,由于表的结构,我需要在父视图中包含几乎整个页面,在这种情况下,不必要的是大量的html数据在每次请求时发送到浏览器 - 打败ajax调用/部分更新的目的(如果我错了,请纠正我)。
答案 0 :(得分:1)
对不起我误读了,我以为你想静态调用一个动作方法。如果你想通过一次点击更新2个部分,那么我现在真的不知道如何使用随附的apis进行更新。你可以做的是创建一个小的javascript(jquery!)来接管链接的点击,然后让脚本用ajax加载渲染页面。
我会在几分钟内发布一个例子:P
<script src="../../Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$("#TheLink").click(){
$("#PlaceToUpdate1").load("/Controller/Method/View1");
$("#PlaceToUpdat2").load("/Controller/Method/View2");
}
});
});
</script>
我不确定这是否会完全像那样(没有编译器,只是我的头脑),但它是这样的。当然链接应该是一个不做任何事情的虚拟链接,因为脚本实际上是这样做的(尽管你可以拦截链接方法,如果你发回一个虚假或类似的东西)
答案 1 :(得分:0)
您可以在HTML帮助程序方法中手动构建部分视图。但是,该方法的可行性取决于部分视图是否将在其他页面中重用。我使用HTML帮助器方法从头开始构建数据网格控件。我的一些页面有三个或四个这样的数据网格由jQuery手风琴控件管理,以减少屏幕占用空间。出于多种原因,我选择构建HTML帮助程序。首先,我希望在我的应用程序中使用此控件。其次,我不想用一堆条件逻辑加重我的观点。最后,我希望能够在视图中更改网格的配置(包括模型),因此每次更改时都不需要重新编译。网格支持LINQ-to-SQL模型和用户定义的类(使用反射),具有内置的寻呼机控件和支持网格中多个搜索字段的搜索机制。我还设置了列,以便它们可以显示格式化文本,链接到控制器操作或保持mailto:链接。在网格本身中,您可以定义模型以填充网格,可选地设置要显示的列,为创建指定操作和控制器,并为删除指定JavaScript函数(因为我使用jQuery对话框插件来确认消息)。所有这些更改都在视图中进行管理。
学习如何利用HTML帮助程序方法为您提供最接近MVC提供的ASP.NET服务器控件。