一个视图中的多个可更新部分视图

时间:2015-02-17 13:14:13

标签: asp.net asp.net-mvc partial-views

我正在处理我的第一个ASP.NET MVC 4(C#)应用程序。我创建了一个连接到MongoDB数据库的应用程序。我创建了一个带有输入表单的页面,一个带有显示数据的列表的页面,我创建了一个带有编辑/更新表单的页面来编辑保存的数据。

这一切都很好,但我想让应用程序更加用户友好。我想在一个页面上显示输入表单和保存的数据,而不是在页面之间切换。我想在插入新数据时更新保存的数据。当我想编辑/更新保存的数据时,必须使用编辑/更新表单切换输入表单。

我已阅读有关partial pagesmaster page(_Layout)的内容。我已经读过我可以使用javascript / jQuery更新partial pages

因为我是ASP.NET MVC的新手,我想知道这是否是实现目标的正确和最佳方式,还是有更好的方法。此外,有一些关于重要事项的提示会很好。

1 个答案:

答案 0 :(得分:0)

在MVC中,您有视图,部分视图和布局。所有这些都是“观点”,而且在大多数情况下,区别仅在于你如何使用它们。

局部视图只是一个没有布局的视图,可以通过1)在动作中返回PartialView或2)在视图中使用Html.Partial Razor助手来完成。

布局只是一个被引用为另一个视图布局的视图。这可以通过以下方式实现:1)通过Layout = "~/Views/SomeLayout.cshtml";或2)使用_ViewStart.cshtml文件手动指定视图中的布局。使布局与任何其他视图完全不同的唯一因素是它将调用@RenderBody(),它指示任何视图的渲染结果应该放在哪里。

这是对ASP.NET MVC中视图的简要介绍。当谈到使用像AJAX这样的东西来替换页面的一部分时,重要的是要意识到在页面生命周期的这一点上,没有局部视图,布局等等。你所拥有的只是浏览器的HTML已从服务器接收并用于构建称为“DOM”或文档对象模型的网页的内部表示。你不能只是替换页面上的“局部视图”;你必须替换DOM的一部分。这可能听起来像语义,但它是一个重要的区别,因为客户端,在这种情况下是一个Web浏览器,没有关于文档的哪些部分通过服务器端的部分视图呈现或未呈现的概念,也不关心

但是,替换的可以是部分视图,至少在某种意义上,您可以使用局部视图生成可以作为响应发送到客户端的结果。响应您的AJAX请求的操作方法可以返回PartialView("_SomePartialView"),该视图将呈现,任何数据传递给它,没有布局,并作为响应发送到客户端。但是,在这一点上,它只是HTML,而且,HTML的生成方式也没有区别。您的AJAX请求的回调将收到此HTML,然后必须对其执行某些操作。与典型的浏览器请求不同,浏览器不会自动对此响应执行任何操作(即从中呈现网页)。您有责任选择要替换的DOM的一部分,并将此HTML响应插入该DOM。