2008-12-14 20 views
18

Vielleicht ist das eine naive Frage. Nach meinem Verständnis kann ASP.NET MVC nicht mit ViewState und Postback arbeiten, was die Grundlagen von ASP.NET-Formularen sind. Ist das korrekt?ASP.NET MVC funktioniert nicht mit ViewState und Postback?

Wenn das ist es, dann alle ASP.NET-Websteuerelemente abhängig von ViewState & Postback kann nicht in ASP.NET MVC verwendet werden, richtig?

Antwort

28

Die serverseitigen Steuerelemente von ASP.NET funktionieren mit WebForms, nicht mit MVC. MVC verwendet keine Steuerelemente im herkömmlichen ASP.NET-Sinn (zumindest noch).

Das MVC-Modell unterscheidet sich erheblich vom WebForms-Modell; nicht besser oder schlechter, aber sehr verschieden. Die Verwendung von MVC bringt den Entwickler viel näher an den generierten HTML-Code heran, eignet sich daher besser für Komponententests und bietet eine starke Trennung von Problemen zwischen der Benutzeroberfläche und dem Code, der diese Benutzeroberfläche auffüllt.

Auf den ersten Blick, vor allem für gehärtete ASP.NET-Veteranen, kann MVC wie ein riesiger Schritt rückwärts erscheinen (wenn Sie damals codieren, könnten Visionen von ASP-COM-Entwicklung in Ihrem Kopf tanzen).

Aber geben Sie MVC einen Versuch. Es ist sehr interessant und sein Modell ist ziemlich überzeugend, sobald man sich daran gewöhnt hat.

Lesen Sie mehr hier: http://quickstarts.asp.net/previews/mvc/mvc_HowToRenderFormUsingHtmlHelpers.htm

Überprüfen Sie auch dieses interessante Blog-Engine aus, die MVC verwendet: http://www.codeplex.com/oxite

Schließlich Besuche Rob Conery MVC Storefront-Projekt: http://wekeroad.com/category/mvc-storefront

+4

"zumindest noch" - Hoffentlich nie! – UpTheCreek

+0

Einverstanden! Das MVC-Modell wächst und wächst auf Sie. –

+0

MVC-Modell ist wirklich der bessere Ansatz. .net-Seiten wurden für Windows-Entwickler erstellt, so dass die Programmierung für das Web beginnen könnte, aber in Wirklichkeit ist dieses Modell schlecht für die Webentwicklung geeignet. MVC mag wie ein Rückschritt aussehen, aber nur für Leute, die den Lebenszyklus einer Webseite nicht verstehen. Ich bin froh, dass Postback und Viewstate getötet werden. Werde sie nicht vermissen. – sarsnake

0

Dies könnte überraschen Sie, aber ich versehentlich einen Button auf einer MVC-Seite, und implementiert das Click-Ereignis, und es hat tatsächlich funktioniert!

Ich war überrascht, vielleicht funktioniert es nur für diesen einfachen Fall (es war das einzige Element auf der Seite zu dieser Zeit), und die Tatsache, dass die Antwort mit einer Umleitung endete, aber in einigen Fällen scheint es funktionieren kann :)

+0

Nicht alle Steuerelemente werden von MVC vereitelt. Nur diejenigen, die das Tag

(d. H. TextBox, DropDown usw.) erfordern. Wenn es ViewState benötigt, wird es (sollte nicht) in MVC funktionieren. – chadmyers

+1

Wenn es runat = server nicht hat, wird es nicht als serverseitiges Steuerelement verwendet! –

4

Dies mag Sie vielleicht überraschen, aber ich fiel versehentlich eine Taste auf einem MVC Seite und implementiert das Click-Ereignis, und es tatsächlich funktioniert!

Bitte korrigieren Sie mich, wenn ich falsch liege, aber ich denke, das braucht keinen ViewState. Es sollte ein einfaches HTML-Tag erstellen, und wenn Sie die Eigenschaften der Schaltfläche zur Laufzeit nicht ändern (Text, Ereignis, ...), wird kein VIEWSTATE benötigt.

Vielleicht ist das der Grund, warum es funktioniert hat.

Verwandte Themen