Yeoman generator for ASP.NET 5 projects with Semantic UI
- Dependencies:
- Node.js:
brew install node
for Mac OS X,choco install nodejs
for Windows OS - Yeoman:
npm install -g yo
- Node.js:
- Install:
npm install -g generator-aspnet
- Run:
yo aspnet
-
yo aspnet
shows a wizard for generating a new ASP.NET app -
yo aspnet --grunt
generatesGruntfile.js
files for web templates instead ofgulpfile.js
-
yo aspnet --help
shows flags and other configurable options
Full, template based projects available in generator:
- Empty Application
- Console Application
- Web Application
- Web Application Basic [without Membership and Authorization]
- Web API Application
- Nancy ASP.NET Application
- Class Library
- Unit Test project
The Empty Application, Console Application, Web Application, Web Application Basic (a.k.a. Web Application No Auth), Web API Application and Class Library are based on the templates introduced with Visual Studio 2015. They are available and maintained in the ASP.NET Templates project.
ASP.NET Templates provide project templates which are used in Visual Studio for creating ASP.NET 5 applications.
The Nancy project is based on framework's "Hello World" template: Nancy Getting Started: Introduction
The Docker support with Dockerfile
configuration files is based on the official Docker image for ASP.NET 5
The project type and application name can be specified as optional command line arguments:
yo aspnet [projecttype [applicationname] [uiframework]]
The valid project types are:
empty
for Empty Applicationconsole
for Console Applicationweb
for Web Applicationwebbasic
for Web Application Basicwebapi
for Web API Applicationnancy
for Nancy ASP.NET Applicationclasslib
for Class Libraryunittest
Unit Test project
The valid UI framework types are:
bootstrap
for Bootstrap (this is the default and does not have to be specified explicitly)semantic
for Semantic UI
Example:
yo aspnet webbasic "my semantic app" semantic
will create a "Web Application Basic" project called "my semantic app" using the Semantic UI framework.
Example:
yo aspnet webbasic "my bootstrap app"
ORyo aspnet webbasic "my bootstrap app" bootstrap
will create a "Web Application Basic" project called "my bootstrap app" using the Bootstrap framework.
This generator uses the Semantic UI bower package. By default it includes the entire Semantic UI .css or .min.css depending on the environment. You can read the Semantic UI documentation here to learn how to use just the components you need.
In order for Semantic UI validation to play nicely with the jQuery unobtrusive validation, a helper has been added to hook into the validation calls and update the fields. This module simply highlights the field, and displays a validation summary.
For a form to be validated, add the validate-me
class. To display the error messages use:
<div asp-validation-summary="ValidationSummary.All" class="ui error message"></div>
semantic.validation.js is where the magic happens. Upon error (highlight), find the nearest field element and add the error class. When the error is cleared (unhighlight), remove the error class from the nearest field element.
To assist with menu highlighting depending on the route, a MenuLinkTagHelper class has been included.
The goal of generator-aspnet
is to provide an experience consistent with creating new ASP.NET 5 (DNX) projects
and files in Visual Studio 2015.
The list of related generators can be seen on our Wiki section
The alphabetic list of available sub generators (to create files after the project has been created):
- aspnet:AngularController
- aspnet:AngularControllerAs
- aspnet:AngularDirective
- aspnet:AngularFactory
- aspnet:AngularModule
- aspnet:AppSettings
- aspnet:BowerJson
- aspnet:Class
- aspnet:CoffeeScript
- aspnet:Dockerfile
- aspnet:gitignore
- aspnet:Gruntfile
- aspnet:Gulpfile
- aspnet:HTMLPage
- aspnet:Interface
- aspnet:JavaScript
- aspnet:JScript
- aspnet:JSON
- aspnet:JSONSchema
- aspnet:JSX
- aspnet:Middleware
- aspnet:MvcController
- aspnet:MvcView
- aspnet:nuget
- aspnet:PackageJson
- aspnet:readme
- aspnet:StartupClass
- aspnet:StyleSheet
- aspnet:StyleSheetLess
- aspnet:StyleSheetScss
- aspnet:TagHelper
- aspnet:TextFile
- aspnet:tfignore
- aspnet:TypeScript
- aspnet:TypeScriptConfig
- aspnet:TypeScriptJSX
- aspnet:UserSecrets
- aspnet:WebApiContoller
** Note: files generated are created in the working directory, no conventions are forced **
Creates AngularJS controller file using $scope
Example:
yo aspnet:AngularController filename
Produces filename.js
Creates AngularJS controller file using Controller As
syntax.
Example:
yo aspnet:AngularControllerAs filename
Produces filename.js
Creates AngularJS directive file.
Example:
yo aspnet:AngularDirective filename
Produces filename.js
Creates AngularJS factory file.
Example:
yo aspnet:AngularFactory filename
Produces filename.js
Creates AngularJS module file
Example:
yo aspnet:AngularModule filename
Produces filename.js
Creates a new appsettings.json file
Example:
yo aspnet:AppSettings
Produces appsettings.json
Creates a new bower.json
and configuration file.
Example:
yo aspnet:BowerJson
Produces bower.json
and .bowerrc
Creates a new ASP.NET 5 Class
Example:
yo aspnet:Class Contact
Produces /Contact.cs
using System;
namespace MyNamespace
{
public class Contact
{
}
}
Creates a new CoffeeScript file
Example:
yo aspnet:CoffeeScript filename
Produces filename.coffee
Creates a new Docker configuration file.
By default Mono
based definition file is created.
To create CoreCLR
based definition file use --coreclr
option
Example:
yo aspnet:Dockerfile
Creates a new Dockerfile
Are you curious about Docker, Linux containers and ASP.NET 5 Docker image and all these buzz words?
- Docker image for ASP.NET 5 (Docker Hub)
- Running ASP.NET 5 applications in Linux Containers with Docker (MSDN)
- ASP.NET 5 : Continuous Integration with Travis-CI, Tutum, Docker, Webhooks and Azure [Advanced]
- ASP.NET 5 on Docker talk at NDC {London} by Mark Rendle
Creates a new .gitignore file
Example:
yo aspnet:gitignore
Produces .gitignore
Creates a new Grunt
file
Example:
yo aspnet:Gruntfile
Produces Gruntfile.js
Creates a new Gulp file
Example:
yo aspnet:Gulpfile
Produces gulpfile.js
Creates a new HTML file
Example:
yo aspnet:HTMLPage filename
Produces filename.html
Creates a new ASP.NET 5 Interface
Example:
yo aspnet:Interface IContact
Produces /IContact.cs
Creates a new JavaScript file
Example:
yo aspnet:JavaScript filename
Produces filename.js
Creates a new JavaScript file
Example:
yo aspnet:JScript filename
Produces filename.js
Creates a new JSON file
Example:
yo aspnet:JSON filename
Produces filename.json
Creates a new JSON schema file
Example:
yo aspnet:JSONSchema filename
Produces filename.json
Creates a new React JSX file
Example:
yo aspnet:JSX filename
Produces filename.jsx
Creates a new C# Middleware class file
Example:
yo aspnet:Middleware filename
Produces filename.cs
Creates a new ASP.NET 5 MvcController class
Example:
yo aspnet:MvcController ContactController
Produces /ContactController.cs
using Microsoft.AspNet.Mvc;
// For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
namespace MyNamespace
{
public class ContactController : Controller
{
// GET: /<controller>/
public IActionResult Index()
{
return View();
}
}
}
Creates a new ASP.NET 5 MvcView page file
Example:
yo aspnet:MvcView ContactView
Produces /ContactView.cshtml
@*
For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
// ViewBag.Title = "ContactView Page";
}
Creates a new NuGet.config
file. The support for unstable development
feed is provided by --unstable
option.
Example:
yo aspnet:nuget --unstable
Produces NuGet.config
with unstable NuGet feed
Creates a new package.json file
Example:
yo aspnet:PackageJson
Produces package.json
Creates a new REAMDE.md documentation file in Markdown format
You can optionally pass --txt
option to use .txt
extension.
Example:
yo aspnet:readme [--txt]
Produces readme.md
Creates a new Startup Class file
Example:
yo aspnet:StartupClass
Produces Startup.cs
Creates a new CSS file
Example:
yo aspnet:StyleSheet style
Produces style.css
Creates a new Less class file
Example:
yo aspnet:StyleSheetLess filename
Produces filename.less
Creates a new Sass SCSS class file
Example:
yo aspnet:StyleSheetSCSS filename
Produces filename.scss
Creates a new TagHelper class file
Example:
yo aspnet:TagHelper filename
Produces filename.cs
Creates a new Text file
Example:
yo aspnet:TextFile filename
Produces filename.txt
Creates a new .tfignore file
Example:
yo aspnet:tfignore
Produces .tfignore
Creates a new TypeScript file
Example:
yo aspnet:TypeScript filename
Produces filename.ts
Creates a new TypeScript configuration file
Example:
yo aspnet:TypeScriptConfig
Produces tsconfig.json
Creates a new JSX-enabled TypeScript file
Example:
yo aspnet:TypeScriptJSX filename
Produces filename.tsx
Adds UserSecrets information to ASP.NET5 project.json
file.
The generator do not update existing keys if found and does
not create new project.json
file.
Example:
yo aspnet:UserSecrets
This will add following keys to project.json:
- "userSecretsId" key
- "Microsoft.Extensions.Configuration.UserSecrets" key under "dependencies"
Creates a new ASP.NET 5 WebApiController class
Example:
yo aspnet:WebApiController ValuesController
Produces /ValuesController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNet.Mvc;
// For more information on enabling Web API for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
namespace MyNamespace.Controllers
{
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET: api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
public void Post([FromBody]string value)
{
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}
Copyright 2014-2016 OmniSharp
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.