Download ASP - TechNet Gallery

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Clusterpoint wikipedia , lookup

Database model wikipedia , lookup

Transcript
ASP.NET Core 1.0 MVC 6 using WEB API and AngularJs
Introduction
In this article we will see in detail of how to create ASP.NET Core 1.0 MVC 6 using WEB API and
AngularJs.
You can also view our previous article http://www.c-sharpcorner.com/UploadFile/asmabegam/AspNet-5-crud-using-scaffolding-and-entity-framework/
Prerequisites
Visual Studio 2015: You can download it from here.
ASP.NET 5 /Core 1.0: download ASP.NET 5 RC from this link https://get.asp.net/
In this article we will see in detail of how to

Create our ASP.NET Core 1.0 Web Application.

How to change the Default Connection string to our SQL Server Connection String.

How to add Model and DbContext Class for using in WEB API

How to add Entity framework Service in Startup.cs file.

How to add our WEB API Controller.

How to add grunt package using NPM configuration file

How to configure Grunt File.

How to Run the Grunt file using Visual Studio Task Runner Explorer

How to create our AngularJs Module, Controller and Service file and get web API data
for bind in MVC page.
Using the code
Create a Database
We will be using our SQL Server database for our WEB API. First we create a database named as
StudentsDB and a table as StudentMaster. Here is the SQL script to create Database table and
sample record insert query in our table.
USE MASTER
GO
-- 1) Check for the Database Exists .If the database is exist then drop and create new DB
IF EXISTS (SELECT [name] FROM sys.databases WHERE [name] = 'StudentsDB' )
DROP DATABASE StudentsDB
GO
CREATE DATABASE StudentsDB
GO
USE StudentsDB
GO
-- 1) //////////// StudentMasters
IF EXISTS ( SELECT [name] FROM sys.tables WHERE [name] = 'StudentMasters' )
DROP TABLE StudentMasters
GO
CREATE TABLE [dbo].[StudentMasters](
[StdID] INT IDENTITY PRIMARY KEY,
[StdName] [varchar](100) NOT NULL,
[Email] [varchar](100) NOT NULL,
[Phone] [varchar](20) NOT NULL,
[Address] [varchar](200) NOT NULL
)
-- insert sample data to Student Master table
INSERT INTO [StudentMasters]
([StdName],[Email],[Phone],[Address])
VALUES ('Shanu','[email protected]','01030550007','Madurai,India')
INSERT INTO [StudentMasters]
([StdName],[Email],[Phone],[Address])
VALUES ('Afraz','[email protected]','01030550006','Madurai,India')
INSERT INTO [StudentMasters]
([StdName],[Email],[Phone],[Address])
VALUES ('Afreen','[email protected]','01030550005','Madurai,India')
select * from [StudentMasters]
Create our ASP.NET Core 1.0 Web Application.
After installed both Visual Studio 2015 and ASP.NET 5 RC. click Start, then Programs and select
Visual Studio 2015 - Click Visual Studio 2015. Click New, then Project, select Web and select
ASP.NET Web Application. Enter your Project Name and click OK.
Select Web Application under ASP.NET 5 Template and click ok.
Database Connection String:
Now we need to change the local connection string from ASP.Net 5 project with our SQL Server
connection.
Note: In ASP.NET 5 we need to use “appsettings.json” file instead of web.config. Yes in ASP.NET 5
there is no web.Config file for connection string we need use the “appsettings.json”
the “appsettings.json” file from our Asp.NET 5 solution.
.We can find
To change the default connection string with our SQL connection open the “appsettings.json”
file .Yes this is JSON file and this file looks like below Image by default.
Now the default connectionstring will be something like this
"ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnet5MYASP.NET5DemoTest-afb3aac0-d181-4278-8436cafeeb5a8dbf;Trusted_Connection=True;MultipleActiveResultSets=true"
Now we change this to our SQL Connection like below
"ConnectionString":
"Server=YourSQLSERVERNAME;Database=StudentsDB;user
id=SQLID;password=SQLPWD;Trusted_Connection=True;MultipleActiveResultSets=true;"
Here you can change as per your SQL Connection and save the “appsettings.json” file. The
updated JSON file will be looks like this.
Creating our Model
We can create a model by adding a new class file in our Model Folder.
Right click the Models folder and click add new Item .Select Class and enter your class name as
“StudentMasters.cs”
Here our class will be look like below image .Here we will add our model field property.
Add the header file
using System.ComponentModel.DataAnnotations; and add all our table
field name as property in this model class like below code.
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Threading.Tasks;
System.ComponentModel.DataAnnotations;
namespace MYASP.NET5DemoTest.Models
{
public class StudentMasters
{
[Key]
public int StdID { get; set; }
[Required]
[Display(Name = "Name")]
public string StdName { get; set; }
[Required]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[Display(Name = "Phone")]
public string Phone { get; set; }
public string Address { get; set; }
}
}
Now we have created our Model next step is to add DBContext for our model.
Creating DbContext
Now we need to create a DBContext for our Entity Framework. Same like Model Class add
a new class to our Models folder.
Right click the Models folder and click add new Item .Select Class and enter your class name as
“StudentMastersAppContext.cs”
Here our class will be look like below image.
Now first we need to
Microsoft.Data.Entity;
add
the
header
file
for
Entity
framework
as
using
Next inherit the DbContext to our class and then create object for our DBContext like
below code.
using
using
using
using
System.Collections.Generic;
System.Linq;
System.Threading.Tasks;
Microsoft.Data.Entity;
namespace MYASP.NET5DemoTest.Models
{
public class StudentMastersAppContext : DbContext
{
public DbSet<StudentMasters> Students { get; set; }
}
}
Now we can created our DB context and next step is to add a Service for our Entity
Framework.
Adding Entity Framework Service in Startup.cs
Next we need to add our Entity Framework service in Startup.cs . We
can find the Startup.cs file from our solution explorer .
Open the Startup.cs file and we can see by default
ApplicationDBContext will be added in ConfigureServices method.
the
Now we can add one more DBContext for our
below code.
StudentMastersAppContext
like
// Add Entity Framework
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<StudentMastersAppContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
In ConfigureServices method we add like this code below.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc();
// Add Entity Framework
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<StudentMastersAppContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
}
Next step is to add WEBAPI Controller.
Creating our WEBAPI Controller
Right click the Controller folder and click add new Item .Select API Controller with Action, using
Entity Framework and click Add.
Now we need to select our newly created Model class and our Data
Context Class.
Model Class: In Model Class select our Model Class which we created
as “StudentMasters”.
Data Context Class: In Data Context select our DBContext class which
we created as “StudentMastersAppContext”
Give our Controller name with API and click ADD.
Now we can see our WEB API Controller has been created
To test it we can run our project and copy the get method api path here we can see our API path
for get is api/StudentMasters/
Run the program and paste the above API path to test our output.
Create Scripts and Controller Folder:
Next we need to add a new folder in our project for AngularJs.
Create a new folder named “Scripts” .Right click our project and click add new Folder and name
the folder as “Scripts”
Now we create one more folder for our AngularJs controller named as “Controllers”
Adding grunt package using NPM configuration file
Now we need to add a NPM Configuration File for adding a grunt package to run our java scripts.
As we have created as a Web Application the NPM Configuration File will be located in our
project.
By default we can’t view our NPM Configuration File. The NPM Configuration File will be in the
name of “package.JSON” . TO view that from the Solution Explorer click on “Show All Files”
Now we can see NPM file as “package.JSON”
Dependencies Folder:
In dependency folder we can see the entire installed NPM package. Here we can see by default
grunt package was been not installed .Here we will see how to add the grunt package.
If this “package.JSON” is not available
Right click our Project and click Add New Item to add our NPM Configuration File. Select ClientSide and Select NPM Configuration File and click Add.
Now open the “package.JSON” file .Now first we need to change the name to our project Solution
name and add our grunt package .we can see the code here below the image.
Here we have changed the name as our Solution name and also added the grunt package.
{
"name": "testforDemo",
"version": "0.0.0",
"devDependencies": {
"gulp": "3.8.11",
"gulp-concat": "2.5.2",
"gulp-cssmin": "0.1.7",
"gulp-uglify": "1.2.0",
"rimraf": "2.2.8",
"grunt": "0.4.5",
"grunt-contrib-uglify": "0.9.1",
"grunt-contrib-watch": "0.6.1"
}
}
After adding the grunt file save the file .Now we can see in the Dependencies folder
Now save the package.json file and you should be able to see a grunt package under
Dependencies/ npm Folder.
Once we click on save “package.json: the “Dependencies” and “npm” folder will be as “Restoring”.
Now right click the “Dependencies” folder and click Restore Packages. This will install all the
packages to your npm folder.
Configure Grunt File.
Grunt is used to build all our client side resources like JavaScript for our project.
First step is to we need to add a Grunt file to our project. Right click our project and Select
Client-Side and Select Grunt Configuration File and click Add.
Here we can see now we have added Grunt file to our project .Next is we need to edit this file to
add load plugins, configure plugins and define tasks
Here in our Grunt file we have first load plugins which we have added in our npm. Using
loadNpmTask here we load 'grunt-contrib-uglify' , 'grunt-contrib-watch'
Next we configure the grunt add the app.js file in our wwwroot folder. All our Script files from
Scripts folder result will be added in this app.js file.
The watch plugin will be used to check for any changes on JavaScript file and update it app.js
with all new changes.
/*
This file in the main entry point for defining grunt tasks and using grunt plugins.
Click here to learn more. http://go.microsoft.com/fwlink/?LinkID=513275&clcid=0x409
*/
module.exports = function (grunt) {
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.initConfig({
uglify: {
my_target: {
files: { 'wwwroot/app.js': ['Scripts/app.js', 'Scripts/**/*.js'] }
}
},
watch: {
scripts: {
files: ['Scripts/**/*.js'],
tasks: ['uglify']
}
}
});
grunt.registerTask('default', ['uglify', 'watch']);
};
Save the file.
Run the Grunt file using Visual Studio Task Runner Explorer
Now we need to run the Grunt file using Visual Studio Task Runner.
To view the Task Runner Click the menu View-> Other Windows,-> and click on Task Runner
Explorer.
Now we can see our Task Runner Explorer.
Click on GruntFile.js and click on refresh button at top left.
Now we can see all the GruntFile has been added.
Right click the default under Alias Task and click Run.
Now our Grunt file has been successfully run in our project. When we add a script file we can see
new app.js file will be created in our wwwroot folder.
Create our AngularJs Module, Controller and Service
Creating AngularJs Module:
Now we will create a new AngularJs module under our Scripts folder.
Right click our Scripts folder and click add new Item and Select Client-Side and Select AngularJs
Module and click Add.
Now we can see a default AngularJS Module code like below.
(function () {
'use strict';
angular.module('app', [
// Angular modules
'ngRoute'
// Custom modules
// 3rd Party Modules
]);
})();
Change this with our Module Name and service name for calling WEB API and binding from
Controller.
(function () {
'use strict';
angular.module('studentapp', [
// Angular modules
'studentService'
// Custom modules
// 3rd Party Modules
]);
})();
Creating AngularJs Service:
Now we will create a new AngularJs Service under Controllers folder inside Scripts folder.
Right click our Controllers folder under Scripts folder and clicks add new Item , Select Client-Side
and Select AngularJs Factory and click Add.
Now we can see the default code will be look like this below.
(function () {
'use strict';
angular
.module('app')
.factory('factory', factory);
factory.$inject = ['$http'];
function factory($http) {
var service = {
getData: getData
};
return service;
function getData() { }
}
})();
Change this code to create our service and get our API data.
Here we create our Service as StudentService and get the result from our WEB API
method and bind to APIData.
(function () {
'use strict';
var studentService = angular.module('studentService', ['ngResource']);
studentService.factory('student', ['$resource',
function ($resource) {
alert("hi");
return $resource('/api/StudentMasters/', {}, {
APIData: { method: 'GET', params: {}, isArray: true }
});
alert("hi12");
}
]);
})();
Creating AngularJs Controller:
Now we will create a new AngularJs Controller under Controllers folder inside Scripts folder.
Right click our Controllers folder under Scripts folder and clicks add new Item , Select Client-Side
and Select AngularJs Factory and click Add.
Now we can see the default code will be look like this below.
(function () {
'use strict';
angular
.module('app')
.controller('controller', controller);
controller.$inject = ['$location'];
function controller($location) {
/* jshint validthis:true */
var vm = this;
vm.title = 'controller';
activate();
function activate() { }
}
})();
Change this code to create our Controller and get our API data from AngularJs Servicde
and store to $scope.student for binding in our MVC view.
(function () {
'use strict';
angular
.module('studentapp')
.controller('studentController', studentController);
studentController.$inject = ['$scope', 'student'];
function studentController($scope, student) {
$scope.student = student.APIData();
}
})();
Note : Now again open the Tast Runner Explorer and select the default under Gruntfile.js .
Right click and run it. We can see as “1 file created”.
Now we can see app.js file will be created in our wwwroot .And also all our AngularJS
Module,Service and Conroller script will be added for displaying our data.
Design MVC View page, Run and Output.
Here I have bind the AngularJs controller result to our detaul home index View.
I have changed the default index.cshtml page to below html deign to bind our AngularJS
controller Student data to our view.
<html ng-app="studentapp">
@{
ViewBag.Title = "ASP.NET5";
}
<head>
</head>
<body ng-controller="studentController">
<table width="99%" style=" border-bottom:3px solid #3273d5;">
<tr>
<td width="190">
<table width="99%">
<tr>
<td>
Welcome Mr. {{'SHANU'}}
</td>
</tr>
</table>
</td>
<td class="style1" align="center">
<h3>Shanu - ASP.NET Core 1.0 MVC 6 with WEB API and AngularJS :)</h3>
</td>
</tr>
</table>
<table style="width: 99%; background-color:#FFFFFF; border solid 2px #6D7B8D;
padding 5px;width 99%;table-layout:fixed;" cellpadding="2" cellspacing="2">
<tr style="height: 30px; background-color:#336699 ; color:#FFFFFF ;border:
solid 1px #659EC7;">
<td width="40" align="center"><b>Student ID</b></td>
<td width="100" align="center"><b>Student Name </b></td>
<td width="120" align="center"><b>Email</b></td>
<td width="120" align="center"><b>Phone</b></td>
<td width="120" align="center"><b>Address</b></td>
</tr>
<tbody data-ng-repeat="details in student">
<tr>
<td align="center" style="border: solid 1px #659EC7; padding:
5px;table-layout:fixed;">
<span style="color:#9F000F">
{{details.StdID}}
</span>
</td>
<td align="center" style="border: solid 1px #659EC7; padding:
5px;table-layout:fixed;">
<span style="color:#9F000F">
{{details.StdName}}
</span>
</td>
<td valign="top" style="border: solid 1px #659EC7; padding: 5px;tablelayout:fixed;">
<span style="color:#9F000F">
{{details.Email}}
</span>
</td>
<td valign="top" style="border: solid 1px #659EC7; padding: 5px;tablelayout:fixed;">
<span style="color:#9F000F">
{{details.Phone}}
</span>
</td>
<td valign="top" style="border: solid 1px #659EC7; padding: 5px;tablelayout:fixed;">
<span style="color:#9F000F">
{{details.Address}}
</span>
</td>
</tr>
</tbody>
</table>
</body>
</html>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angularresource.js"></script>
<script src="~/app.js"></script>
Run the Program:
Here we can see all the data from WEB API has been bind to our MVC View using AngularJS.