views:

3987

answers:

3

Perhaps this is a naive question. In my understanding, ASP.NET cannot work with ViewState and Postback which is fundamentals of ASP.NET forms. Is that correct?

If that's it, then all ASP.NET Web Controls depending on ViewState & Postback cannot be used in ASP.NET MVC, right?

+15  A: 

ASP.NET's server-side controls work with WebForms, not MVC. MVC doesn't use controls in the traditional ASP.NET sense (at least yet).

The MVC model is quite different from the WebForms model; not better or worse, but very different. Using MVC puts the developer much closer to the generated HTML, lends itself more intrinsically to unit testing, and provides a strong separation of concerns between the UI and the code that populates that UI.

At first glance, especially to hardened ASP.NET veterans, MVC can seem like a huge step backwards (if you've were coding then, visions of ASP COM development might dance in your head).

But give MVC a try. It is very interesting and its model is quite compelling once you get used to it.

Read more here: http://quickstarts.asp.net/previews/mvc/mvc_HowToRenderFormUsingHtmlHelpers.htm

Also, check out this interesting blog engine that uses MVC: http://www.codeplex.com/oxite

Finally, check out Rob Conery's MVC storefront project: http://blog.wekeroad.com/mvc-storefront/mvc-storefront-part-1/

rp
A: 

This might surprise you, but I accidentally dropped a Button on a MVC page, and implemented the Click event, and it actually worked!

I was surprised, maybe it works for just this simple case (it was the only element on the page at that time), and the fact that the response ended with a redirect, but in some cases it seems it can work :)

leppie
Not all controls are foiled by MVC. Only the ones that require the <form runat="server"> tag (i.e. TextBox, DropDown, etc). If it requires ViewState, it won't (shouldn't) work in MVC.
chadmyers
If it doesn't have runat=server it's not being used as a server side control!
rp
+2  A: 

This might surprise you, but I accidentally dropped a Button on a MVC page, and implemented the Click event, and it actually worked!

Please correct me if I'm wrong, but I think the does not need a ViewState. It should create a simple HTML tag , and if you don't change the properties of the button at run-time (text, event, ...), no VIEWSTATE will be needed.

Maybe that's the reason why it worked.