I have an asp.net Webforms website that I'm trying to integrate MVC to. I'm almost there, but I'm having some problems.
What I did so far:
Added references to:
- System.Web.Routing
- System.Web.Abstractions
- System.Web.Mvc
Updated the root Web.config to load the three assemblies at run time.
Added directories:
- Views
- App_Code\Controllers
Updated the Global.asax and configured routing:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
}
So far so good.
I right-click the Controllers folder, add a "HomeController", like this, run the website and it works!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
public class HomeController : Controller
{
public string Index()
{
return "This is my <b>default</b> action...";
}
public string Welcome()
{
return "This is the Welcome action method...";
}
}
Now the problem:
I update the HomeControler to use a View, like this, but it doesn't work.
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
To create the view, I created a directory inside "Views" called "Home". Inside "Home" I added a new "Empty Page (Razor v3)", called "Index.cshtml":
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>View Template!</p>
The first problem is with this line:
ViewBag.Title = "Index";
VS indicates that "The name 'ViewBag' does not exist in the current context
The second problem is that when I run the website, I get the following error message:
The view 'Index' or its master was not found. The following locations were searched:
~Views/Home/Index.aspx
~Views/Home/Index.ascx
~Views/Shared/Index.aspx
~Views/Shared/Index.ascx
I know it is possible to integrate a Webforms website with MVC pages.
It appears like my configuration is correct. I can successfully add a Controller and get the desired result.
BUT, how do I get my Controller to use a View?