Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sharing a master between MVC and WebForms - dealing with the <form>

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?

like image 633
Keith Avatar asked Jun 23 '09 08:06

Keith


People also ask

Is it possible to create web application with both Web Forms and MVC?

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.

What is the difference between MVC and webforms?

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.

Which is better Web forms or MVC?

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.

Is MVC faster than web forms?

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.


1 Answers

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.

like image 106
chris166 Avatar answered Oct 19 '22 20:10

chris166