1

我是 ASP.NET 和 MVC 的新手(虽然不是编程)。观看视频并加快速度。我主要来自桌面世界,所以我不是回帖的忠实粉丝。我自然而然地倾向于 ajax。

在 MVC 中,似乎在我们的控制器中,我们通常会回发到视图(html 页面)。我的问题是,我们可以将视图嵌入到 1 个主视图中吗?这个想法是每个请求都将是对控制器的 ajax 调用,控制器将确定它需要作为 html 内容返回的视图以嵌入到现有页面中。由于我们可以通过 javascript 对返回的视图执行所有很酷的视觉客户端技巧,因此没有回发和更流畅的用户体验。想想变形,褪色,滑动等。

作为一个用户,我很想点击一个链接,让页面淡出,然后淡入整个新页面。

我可能表现出我对这个领域的新手的无知,但这似乎很有可能。

4

1 回答 1

3

首先,MVC中没有Postback的概念。这是将数据传递到服务器的 Web 窗体策略。控制器不执行任何回发查看。您必须了解的是,控制器负责,比如说,准备信息。此信息被传递给视图,以视图认为合适的方式呈现。控制器返回一个结果并说明应该使用哪个视图来满足用户的请求。

用户可以使用视图中的表单将来自客户端的数据提交到某个控制器中的操作。控制器接收信息,以特定方式对其进行处理并对其进行处理,例如将其存储在某个数据源中。这不是 Web 表单中的回发概念。

您在问题中描述的是 SPA 应用程序的工作方式,但您必须了解,即使在 SPA 应用程序中,视图也不总是预加载的。如果您有一个大型应用程序,尤其如此。

通过 Ajax 下载视图(实际上是部分视图)是完全正常的,因此您不应该不惜一切代价避免这种情况。稍后当您通过 Ajax 获取视图时,您可以应用 jQuery 过滤器和特殊效果。

更新:控制器返回操作结果。正如你猜到的,这些结果的基类是ActionResult. 许多其他类继承自这个类。例如,ViewResult是最常用的并且是此答案的主题。您还可以FileResult使用它来返回文件、RedirectToRouteResult执行重定向等。这些都是行动的结果。在 MVC 中返回视图意味着:“为了向用户显示此数据,请使用此视图或部分视图。”

当您请求(发出 HTTP GET 方法)时,控制器将返回一个视图给您,而当您发布数据(发出 HTTP POST 方法)时,控制器将做一些事情并执行重定向,之后它通常会返回一个视图,或者返回一个文件等。 MVC 中的 Postback 本质上是不存在的。AutoPostBack例如,在 Web 窗体中,如果您单击按钮或更改已设置为的下拉框中的值true,则将启动回发并将其ViewState发送到服务器。MVC 没有那种机制来触发回发。您可以提交表单或使用 Ajax 执行 GET 请求以检索信息或 POST 以将数据作为 JSON 提交回服务器。

因此,当您请求查看该页面时,它不是回发。当您将表单数据发布到服务器时,它不是回发,而是提交数据并且与 Web 表单回发不同。

我希望这对你现在有帮助。

于 2013-06-28T19:57:22.793 回答