首先,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 表单回发不同。
我希望这对你现在有帮助。