ASP.net MVC RC1 – Removing Code Behind files
With ASP.net MVC, one thing I always wondered is why we still had to have the code behind files. Looking at the FubuMVC samples, everything looks much cleaner without the additional files – with RC1, code-behind files are no longer required!
However, if your upgrading from beta, you will need to change your ASPX pages. In this post, I will cover the steps I went through to remove these files.
During beta, my solution looked looked like this:
In my code behind, I have a mixture of strongly typed ViewPage<T> objects and the standard ViewPage. As a result, in my ASPX page, I had a CodeBehind file and a Inherits tag.
With RC1, I can remove the CodeBehind tag and replace the Inherits to System.Web.MVC.ViewPage directly.
I can now delete Index.aspx.cs and Index.aspx.designer.cs leaving me with just the Index.aspx file.
If my ViewPage was strongly typed with a model, the the Inherits tag would include this, just like with the code behind model:
For ASP.net MVC User Controls, instead of ViewPage<T> you use ViewUserControl<T>:
Similarly with Master Pages:
After changing all my views, controls and master pages, my solution looks like this:
This makes me happy.
UPDATE: Parser Error Message: Could not load type 'System.Web.Mvc.ViewPage<ProductsMenuModel>'.
Ok – I made a little mistake. When I hit my ViewPage<T>, I received a Parser error message. If I had paid more attention to the release notes, I would have noticed I needed to copy an additional block of xml into my web.config.
<pages
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
Labels: ASP.net MVC






Blogger comments
Dave the Ninja