gulp-aspnet-viewnames
Generates a c# file containing strong typed information about mvc views.
It also watches changes in the Views
directory so that the file is always regenerated when necessery.
Install
npm install gulp-aspnet-viewnames --dev
TL;DR version
Instead of this:
return View("~/Views/Home/Index.cshtml");
You'll be able to write this:
return View(Views.Home.Index.FullName);
Usage
This should be integrated into the gulp build process:
var viewnames = ;gulp;
Typically, you'll want to bind this to the Project Open
binding so that the generated file is always up to date while you're working.
What happens
Run the viewnames
task from within Task Runner Explorer. You should run it once (if you don't want to use the bindings), after that, it will continue watching over the Views
and regenerate the file without your intervention.
Suppose we have the following directory under Views
:
- Home
- Index.cshtml
- Shared
- _Layout.cshtml
- Error.cshtml
- _ViewStart.cshtml
The following c# file will be generated (default name is ViewNames.cs
):
namespace TheNameSpaceOfTheGeneratedFile{ // ViewName class skipped for brevity. // ViewName will contain a Name and a FullName property. public static class Views { public static readonly ViewName _ViewStart = new ViewName("_ViewStart", "~/Views/_ViewStart.cshtml"); public static class Home { public static readonly ViewName Index = new ViewName("Index", "~/Views/Home/Index.cshtml"); } public static class Shared { public static readonly ViewName Error = new ViewName("Error", "~/Views/Shared/Error.cshtml"); public static readonly ViewName _Layout = new ViewName("_Layout", "~/Views/Shared/_Layout.cshtml"); } }}
So now, you can reference your views with strong typed values rather than hard coded ones, which are prone to refactoring issues.
The generated file should be ignored by your source control.