Javascript 如何在ASP.NET MVC中将信息从弹出窗口/模式窗口传递到基础窗口

Javascript 如何在ASP.NET MVC中将信息从弹出窗口/模式窗口传递到基础窗口,javascript,asp.net-mvc,forms,modal-dialog,Javascript,Asp.net Mvc,Forms,Modal Dialog,我正在用ASP.NETMVC编写一个联系人表单。用户将能够附加常规文件(使用普通文件/浏览功能),以及搜索特定人员并附加与该人员相关的文件。第一部分很简单,但第二部分让我头疼 对于第二部分,我将使用一个2-3页的向导。用户将收到一个搜索字段,输入用户名,点击搜索,并显示结果列表。单击名称后,他们将看到一个相关记录的列表,他们可以检查其中的一些记录,也可以不检查。然后,用户将单击“附加”,文件将显示在联系人表单中 我担心如果我离开联系人页面或绕过模式窗口(模式窗口可以在页面之间导航吗?)或弹出窗口

我正在用ASP.NETMVC编写一个联系人表单。用户将能够附加常规文件(使用普通文件/浏览功能),以及搜索特定人员并附加与该人员相关的文件。第一部分很简单,但第二部分让我头疼

对于第二部分,我将使用一个2-3页的向导。用户将收到一个搜索字段,输入用户名,点击搜索,并显示结果列表。单击名称后,他们将看到一个相关记录的列表,他们可以检查其中的一些记录,也可以不检查。然后,用户将单击“附加”,文件将显示在联系人表单中

我担心如果我离开联系人页面或绕过模式窗口(模式窗口可以在页面之间导航吗?)或弹出窗口中的控制器,我会以某种方式破坏整个MVC体系结构

我不想到处乱搞AJAX调用,那么如何弹出一个窗口,运行这个2-3页的快速搜索向导,然后将内容写回基本窗口呢?这仅仅是一个基本的JavaScript和HTML问题,还是您认为这会更复杂,还是AJAX只是一个不可避免的问题?

为什么会出现这样的问题?如果使用Ajax,则可以发布详细信息,返回完全呈现的PartialView并在页面上显示

通过这种方式,您永远不会离开您的基本页,世界上的一切都会很好,您可以将所有数据发布回您的基本页控制器

总而言之。向导中的每个步骤都可以是局部视图,在执行这些步骤时,可以在同一位置渲染局部视图

另一种选择是,所有三个步骤都要从基本页开始,您可以根据需要显示/隐藏tham

也不要忘记原则。如果希望向导是单个视图,则每个视图都需要自行负责。当然,您可以使用id调用控制器,也可以传递完整的模型

通过这种方式,视图可以加载模型、渲染自身、更新模型属性并将模型传递到下一个视图

只是一些想法。我想你可以选择最好的口味

我会选择我最后的选择。我认为将视图模型传递给每个控制器可以获得最佳结果


我希望这会有所帮助。

通过jQuery呈现PartialView是只更新视图的一部分的有效方法

不必深入了解jQuery以及如何使用它,我们就直接开始吧

在您的视图中,PartialView或MasterPage链接到jQuery脚本文件

<script src="../../Scripts/ jquery-1.3.2.min.js"></script>
这差不多就是行动结果

我希望您能看到,该方法只需获取一个参数,将数据过滤到一个列表中,然后返回一个PartialView,该视图将数据列表作为其定义的模型

Html如下所示

<div id="myPartialView">
</div>

因此,jQuery所做的就是发回操作,传递一个“dogs”过滤器。ActionResult的响应被捕获到newHTML中,然后将其放在名为myPartialView的div中

我试图避免使用AJAX,只是因为我不熟悉使用它。我想这是一个学习的好时机。你知道有什么教程贯穿你的建议吗?我试着搜索“ajax局部视图”,但运气不好。是的,搜索对你没有好处。我刚刚为这里的一些人完成了一个关于jQuery和部分视图的文档。我将创建另一个答案并发布。@tribium,您需要从中获取您所能获得的信息,并传递更具体的数据。我仍然认为,为每个步骤创建一个视图,并将视图模型传递给每个视图控制器操作的想法是可行的。
<div id="myPartialView">
</div>
$.post("/MyController/getFilteredData", { filter: “dogs” },  
  function(newHTML) { 
document.getElementById("myPartialView").innerHTML = newHTML;
});