We have a large legacy application where we want to start using MVC for new functionality.
To do this we added custom routing, for instance:
routes.IgnoreRoute( "{*allaspx}", new { allaspx = @".*\.as[pmh]x(/.*)?" } );
And we want to share the master page between the old WebForms and the new MVC pages.
This seems simple enough - changed the master to inherit from ViewMasterPage
and it can be used as the master for MVC pages too.
The problem is the HTML <form>
.
The master page has a <form>
tag at the top and 3 content panels inside it, which is how WebForms like it. The Page
control overrides the master's form to point back at the page, and this appears to be a hardcoded behaviour.
All three content panels have WebForms controls, so the page level <form>
tag needs to be outside them to cover all three. Something like this:
<form id="form1" runat="server">
...
<asp:contentplaceholder id="content1" runat="server" />
...
<asp:contentplaceholder id="content2" runat="server" />
... //etc
</form>
However, for MVC we want to have forms inside the views using the Html.BeginForm
helper. HTML doesn't let you nest forms. MVC pattern needs the views to post back to different actions (for instance a "details" view might post back to an "edit" action).
Does anyone know a good way around this?
Luckily, the answer is yes. Combining ASP.NET Webforms and ASP.NET MVC in one application is possible—in fact, it is quite easy. The reason for this is that the ASP.NET MVC framework has been built on top of ASP.NET.
MVC focuses on separation of concern, i.e., there is no fixed code behind page for every view. A view can be called from multiple action. Web form based on functions and page behind code, i.e., there is code behind page for each view. You have to write code in that class related to this view only.
Advantages of MVC Over Webforms Better Control over Design: MVC has dropped concept of server controls and instead use HTML controls or HTML helpers to generate HTML controls. This gives developers better control over HTML and page design. Design time and run time variations are very few as compared to webforms.
Show activity on this post. My completely unscientific opinion: Yes; ASP.NET MVC is faster than web forms. ASP.NET MVC gives screen pops on the order of 1 to 2 seconds. Web forms is more like 3 to 5 seconds.
We share a master page between web forms and MVC which doesn't have the <form>
. You can create an intermediate master page for web forms which in turn uses your root master page, but adds the <form>
. The hierarchical structure of master pages is very useful for these constructs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With