ASP.Net Empty template doesn't have any nuget packages
included, so no packages.json will exist.
1. Installing MVC
Packages Icluded
Microsoft.AspNet.Mvc
Microsoft.AspNet.WebPages
Microsoft.AspNet.Razor
Microsoft.Web.Infrastructure
References Installed
System.Web.WebPages.Razor
System.Web.WebPages.Deployment
System.Web.WebPages
System.Web.Razor
System.Web.Mvc
System.Web.Helpers
Microsoft.Web.Infrastruture
2. Uninstall-package - References Removed
Microsoft.AspNet.Mvc
System.Web.Mvc
Microsoft.AspNet.WebPages
System.Web.WebPages.Deployment
System.Web.WebPages
System.Web.Helpers
Microsoft.AspNet.Razor
System.Web.Razor
Microsoft.Web.Infrastructure
Microsoft.Web.Infrastruture
Finial complete MVC
directory structure:
3. Add Global Application Class File to application
Global.asax.cs
Project right click >
Add > New Item… > Select Global Application Class
4. Create folders
·
App_Start (can named anything)
·
Controllers
·
Views
5. Under App_Start create a class file and name it whatever
you want - RouteConfiguration.
.axd file types are HTTP Handlers, which should be ignored.
Add code to file:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace myWebsite.App_Start
{
public static class RouteConfiguration
{
public static void Register(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathinfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index"}
);
}
}
}
6. Add code to Global.asax class file passing all routes.
using com.waggintails.App_Start;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Routing;
using System.Web.Security;
using System.Web.SessionState;
namespace com.waggintails
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
RouteConfiguration.Register(RouteTable.Routes);
}
}
}
7. Within controllers folder, add a MVC5 Controller - Empty
Rename to whatever you like – Home
Add code to file:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace com.waggintails.Controllers
{
public class HomeController : Controller
{
// GET:
Default
public ActionResult Index()
{
return View();
}
}
}
8. Within views folder, add an empty view and name the view
as the same name that you had for the controller.
Add code to file:
@{
ViewBag.Title = "Home";
}
<h2>Home</h2>
And within Views folder, add a web.config file.
Add code to file:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup,
System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection,
System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection,
System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc,
Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="com.waggintails" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
<system.web>
<compilation>
<assemblies>
<add assembly="System.Web.Mvc,
Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
</system.web>
</configuration>
Press F5 and Home view should show correctly
9. <Optional> Include a layout view
Within the Views directory add a view called
_ViewStart.cshtml
This view allow you to specify the path for the layout view.
Add code:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Within the directory you had specified in _ViewStart, add the
specified view - _Layout.cshtml
Add code – when using layouts, must include @RenderBody.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>_Layout</title>
</head>
<body>
<div>
@RenderBody()
</div>
</body>
</html>
With layout, finial
complete MVC directory structure: