代码之家  ›  专栏  ›  技术社区  ›  Erx_VB.NExT.Coder

MVC初学者的简单MVC问题

  •  0
  • Erx_VB.NExT.Coder  · 技术社区  · 15 年前

    我有一个Ajax操作链接,它通常只返回一个partialview(它只是一个用户控件ascx文件),但是,我的需求已经改变了,我想返回另一个partialview(总共两个partialview),它占据了我页面的不同区域…当然,我不能连续两次调用“return-partialview(”usercontrol.ascx”)…所以我的问题是,为了这个,一个优雅的工作是什么?

    如何返回两个partialView而不将这两个partialView包装在更大的父视图中?我很犹豫这样做,因为这两个项目都在HTML表的不同部分,由于表的结构,这将要求我在父视图中几乎包括整个页面,在这种情况下,许多HTML数据在每次请求时都会不必要地发送到浏览器,从而破坏了Ajax调用/部分更新的目的。(如果我错了,请纠正我)。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Francisco Noriega    15 年前

    对不起,我误读了,我以为你想静态地调用一个操作方法。如果你想用一次点击来更新2个部分,那么我现在不知道你将如何使用所包含的API。您可以创建一个小的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>
    

    我不确定这是否会完全像那样工作(没有编译器,只是在我的头上),但它是这样的。当然,链接应该是一个不做任何事情的虚拟链接,因为脚本是实际执行的链接(不过,如果您返回一个false或类似的东西,您可以截取links方法)

        2
  •  0
  •   Neil T.    15 年前

    您可以在HTML助手方法中手动构造部分视图。然而,这种方法的可行性取决于局部视图是否会在其他页面中重用。我使用HTML助手方法从头开始构建数据网格控件。我的一些页面中有三到四个数据网格由jquery accordion控件管理,以减少屏幕占用。我选择构建HTML助手有很多原因。首先,我希望在整个应用程序中使用此控件。第二,我不想用一堆条件逻辑来负担我的观点。最后,我希望能够在视图中更改网格的配置(包括模型),这样就不必每次更改网格时都重新编译。网格既支持LINQ到SQL模型,也支持用户定义的类(使用反射),具有内置的寻呼机控件和支持网格中多个搜索字段的搜索机制。我还设置了这些列,以便它们可以显示格式化的文本、链接到控制器操作或保存mailto:link。在网格本身中,您可以定义模型来填充网格,也可以选择设置要显示的列,指定要创建的操作和控制器,以及指定要删除的javascript函数(因为我使用jquery对话框插件来显示确认消息)。所有这些更改都在视图本身中管理。

    学习如何利用HTML帮助器方法可以使您最接近MVC提供的ASP.NET服务器控件。