19

也许这是一个幼稚的问题。据我了解,ASP.NET MVC 不能与 ViewState 和 Postback 一起使用,这是 ASP.NET 表单的基础。那是对的吗?

如果是这样,那么所有依赖于 ViewState 和 Postback 的 ASP.NET Web 控件都不能在 ASP.NET MVC 中使用,对吧?

4

3 回答 3

29

ASP.NET 的服务器端控件使用 WebForms,而不是 MVC。MVC 不使用传统 ASP.NET 意义上的控件(至少目前如此)。

MVC 模型与 WebForms 模型有很大不同;没有更好或更坏,但非常不同。使用 MVC 使开发人员更接近生成的 HTML,更本质上更适合单元测试,并在 UI 和填充该 UI 的代码之间提供了强大的关注点分离。

乍一看,尤其是对于 ASP.NET 的老手来说,MVC 似乎是一个巨大的倒退(如果您当时正在编码,那么 ASP COM 开发的愿景可能会在您的脑海中翩翩起舞)。

但是试试 MVC。它非常有趣,一旦你习惯了它的模型,它就会非常引人注目。

在这里阅读更多:http: //quickstarts.asp.net/previews/mvc/mvc_HowToRenderFormUsingHtmlHelpers.htm

另外,查看这个使用 MVC 的有趣博客引擎:http: //www.codeplex.com/oxite

最后,查看 Rob Conery 的 MVC 店面项目: http ://wekeroad.com/category/mvc-storefront

于 2008-12-14T04:19:53.097 回答
4

这可能会让您感到惊讶,但我不小心在 MVC 页面上放置了一个 Button,并实现了 Click 事件,它确实有效!

如果我错了,请纠正我,但我认为不需要 ViewState。它应该创建一个简单的 HTML 标记,如果您在运行时不更改按钮的属性(文本、事件等),则不需要VIEWSTATE

也许这就是它起作用的原因。

于 2009-11-10T10:16:54.510 回答
0

这可能会让您感到惊讶,但我不小心在 MVC 页面上放置了一个 Button,并实现了 Click 事件,它确实有效!

我很惊讶,也许它只适用于这个简单的案例(它是当时页面上唯一的元素),以及响应以重定向结束的事实,但在某些情况下它似乎可以工作:)

于 2008-12-14T08:12:48.617 回答