Skip to main content

Featured post

XM Cloud content sync from prod to uat or UAT to prod step by step

When working with Sitecore, it’s common to need content synchronization across environments. Today, I’ll walk you through the steps to sync content from Production to UAT/TEST and vice versa. Steps to Follow 1. Set Up Your Workspace Create a folder on your computer where you will manage the script files and exported data. Open the folder path in PowerShell to begin scripting. We need to run some scripts in PowerShell to update the folder with the basic requirements for syncing content. PS C:\Soft\ContentSync> dotnet new tool-manifest PS C:\Soft\ContentSync> dotnet nuget add source -n Sitecore https://nuget.sitecore.com/resources/v3/index.json PS C:\Soft\ContentSync> dotnet tool install Sitecore.CLI PS C:\Soft\ContentSync> dotnet sitecore cloud login If the above error occurs, you will need to run a different command to resolve the issue. PS C:\Soft\ContentSync> dotnet sitecore init now, Again run above command to open and authenticate with XM Cloud. It will be there a...

AngularJS best practice with WebAPI and MVC

Angular-Js with MVC + Web API
Pagination + Sorting with Angular JS

You may also check : Insert,delete,update,select using angularjs with mvc

Here in this tutorial, we will try to show, How to create ASP.Net MVC project using Angular JS, Create Database in Sql Server and Create WebApi.
I wil going to describe in proper way to Binding the Data in Angular Grid. Here, I am using Entity framework 5.0 .

Step 1:- Create ASP.Net MVC Project with VS2013
       
           1. Open your VS IDE 2013
           2. Go to file menu and select New  
           3. Click on create Project
           4. Asp.Net Web Application
               Select MVC template, Click on Add button, Give name as DemoApp.

               Now your MVC project is ready to go for next process.

Step 2:- Create Database and Demo Table Student with some data.

1.    Open your Sql Server
2.    Create a database name as DemoDb by using command Create database DemoDb
3.     Now your database is ready.
4.    Create a table into database by clicking on table folder from DemoDb(Database).

To create table use the following below code.

CREATE TABLE [dbo].[Student](
 [StudentId] [nvarchar](10) NOT NULL,
 [FirstName] [nvarchar](50) NULL,
 [LastName] [nvarchar](50) NULL,
 [Age] [int] NULL,
 [Gender] [nvarchar](50) NULL,
 [Batch] [nvarchar](50) NULL,
 [Address] [nvarchar](50) NULL,
 [Class] [nvarchar](50) NULL,
 [School] [nvarchar](50) NULL,
 [Domicile] [nvarchar](50) NULL,

) 
To insert some data in table use the following below code.
INSERT INTO [dbo].[Student]
           ([StudentId]
           ,[FirstName]
           ,[LastName]
           ,[Age]
           ,[Gender]
           ,[Batch]
           ,[Address]
           ,[Class]
           ,[School]
           ,[Domicile])
     VALUES
           (1,
           'Rahul','Patankar',
           24,'Male','27','Sambhajinagar','10','Godavari Public School','Sambhajinagar'),
     (2,
           'Dnyanesh','Kunde',
           24,'Male','15','Hyderabad','10','Hyderabad Public School','Hyderabad'),
     (3,
           'Shailesh','Wagh',
           24,'Male','10','Sambhajinagar','10','Godavari Public School','Sambhajinagar'),
     (4,
           'Arjun','Shinde',
           26,'Male','17','Sambhajinagar','10','A.K Waghmare','Sambhajinagar'),
     (5,
           'Sayali','Wavikar',
           23,'Female','27','Sambhajinagar','10','Godavari Public School','Sambhajinagar'),
     (6,
           'Sumeet','Chautmal',
           24,'Male','22','Sambhajinagar','10','Godavari Public School','Sambhajinagar')
         
GO


Step 3:- Add Entity Data Model into your project 

1. Select and Right click on Model folder
2. Select  Add
3. Go to New Item
4. In search box, enter Entity Data Model and add it by giving Name as StudentModel.
5. After clicking on add button you able to see one window, Now click on EF designer from   database and press Next.
6. Now you need to create new database connection and fill the information reqd. by clicking on New Db connection.
7. Click on test connection.
   

Step 4:- Creating Web Api project in the same solution name as DemoApp

1. Right Click on Solution Name
2. Click on Add
3. New Project
4. Select Asp.Net Web app
5. Create Name as DemoApp.Api

Select Web API Template and Click on OK.

Here, I am binding the data from Our Database DemoDb with Angular Grid into our MVC Application DemoApp by using Web Api.
So it is required to write some logic to interact with our Database DemoDb and Performing reqd. operations.

Add the reference of DemoApp MVC projects ref.to DemoApp.Api.
By Right Clicking on refereces => add ref. => select reqd. project =>click on Ok.

Note:- Plese Copy the Connection string from your DemoApp web.config file and Paste it into web.config of DemoApp.Api Project.

So, to implement this follow below steps.
                     1. Right Click on Controller Folder into DemoApp.Api project
                     2. Click on Add Controller
                     3. Select Empty Controller and click on add.
                     4. Give name as DemoApiController. Just Copy and Paste the below Code.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace DemoApp.Api.Controllers
{

    [RoutePrefix("api/DemoApi")]
    public class DemoApiController : ApiController
    {
        Private DemoDbEntities db = new DemoDbEntities();
        [Route("GetStudents")]
        public IEnumerable GetStudents()
        {
            return db.Students.AsEnumerable();
        }
        [Route("GetStudentsAsc")]
        public IEnumerable GetStudentsAsc()
        {
            return db.Students.AsEnumerable().OrderBy(x=>x.StudentId);
        }
        [Route("GetStudentsDesc")]
        public IEnumerable GetStudentsDesc()
        {
            return db.Students.AsEnumerable().OrderByDescending(x => x.StudentId);
        } 
    }
}

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

Step 5 :- Using Web Api (DempApp.Api) into Web Application (DemoApp).

Now move to DemoApp( MVC web app project),
              1. In DemoApp, Right click on Controller Folder
              2. Add Controller
              3. Select Empty Controller Give name as DemoController
              4. Your controller Should look like below :-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace DemoApp.Controllers
{
    public class DemoController : Controller
    {
        // GET: Demo
        public ActionResult Index()
        {
            return View();
        }
    }
}
  5. Right Click on Index Action and Add Empty View.
               6. Right Click on Scripts folder into DemoApp
               7. Add new Javascript file Give name as App.js and add below code into it.
var app = angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.pagination']);
app.controller('MainCtrl', [
'$scope', '$http', 'uiGridConstants', function ($scope, $http, uiGridConstants) {
    var paginationOptions = {
        pageNumber: 1,
        pageSize: 10,
        sort: null
    };
    $scope.gridOptions = {
        paginationPageSizes: [10, 20, 30,40,50,60,70,80,90],
        paginationPageSize: 10,
        useExternalPagination: true,
        useExternalSorting: true,
        columnDefs: [
        { name: 'StudentId' },
        { name: 'FirstName', enableSorting: false },
        { name: 'LastName', enableSorting: false },
        { name: 'Age', enableSorting: false },
        { name: 'Gender', enableSorting: false },
        { name: 'Batch', enableSorting: false },
        { name: 'Address', enableSorting: false },
        { name: 'Class', enableSorting: false },
        { name: 'School', enableSorting: false },
        { name: 'Domicile', enableSorting: false },
        ],
        onRegisterApi: function (gridApi) {
            $scope.gridApi = gridApi;
            $scope.gridApi.core.on.sortChanged($scope, function (grid, sortColumns) {
                if (sortColumns.length == 0) {
                    paginationOptions.sort = null;
                } else {
                    paginationOptions.sort = sortColumns[0].sort.direction;
                }
                getPage();
            });
            gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
                paginationOptions.pageNumber = newPage;
                paginationOptions.pageSize = pageSize;
                getPage();
            });
        }
    };
    var getPage = function () {
        var url;
        switch (paginationOptions.sort) {
            case uiGridConstants.ASC:
//URL of your Web Api running Path.
                url = 'http://localhost:57868/api/DemoApi/GetStudentsAsc';
                break;
            case uiGridConstants.DESC:
//URL of your Web Api running Path.
                url = 'http://localhost:57868/api/DemoApi/GetStudentsDesc';
                break;
            default:
//URL of your Web Api running Path.
                url = 'http://localhost:57868/api/DemoApi/GetStudents';
                break;
        }

        $http.get(url)
        .success(function (data) {
            $scope.gridOptions.totalItems = 100;
            var firstRow = (paginationOptions.pageNumber - 1) * paginationOptions.pageSize;
            $scope.gridOptions.data = data.slice(firstRow, firstRow + paginationOptions.pageSize);
        });
    };

    getPage();
}
]);

After adding the Script as App.js into your scripts folder, add the below code into your view i.e. Index.cshtml.








  


              


        
Now everything is done. Just need to do some settings as below. 1. Set Multiple project Startup to start WebApp and WebApi project parallel. 1. Now Right click on solution 2. Set as startup project 3. Click on button multiple project 4. Choose both project as start. 2. To Give Cross Origin Resource Sharing (CORS)
<system.webServer>
<httpprotocol>
      <customheaders>
        <add name="Access-Control-Allow-Origin" value="*">
        <add name="Access-Control-Allow-Headers" value="Content-Type">
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS">
      </add></add></add></customheaders>
    </httpprotocol>
</system.webServer>

Comments

Popular posts from this blog

List of pipeline in Sitecore and it's example

 List of pipeline in Sitecore and it's example Sitecore uses a pipeline architecture to process requests and manage the flow of data within the system. Here is a list of some common pipelines in Sitecore, along with an example for each one: HttpRequestBegin: This pipeline processes the initial request made by a user to the Sitecore website and sets up the environment for processing the request. For example, it might determine the language for the request based on the user's browser settings or the URL . HttpRequestProcessed: This pipeline processes the request after it has been processed by Sitecore and is used to perform any post-processing operations, such as logging or error handling. For example, it might log the request information to a database for later analysis. RenderLayout: This pipeline processes the layout for a page and is responsible for rendering the components of the page, including the header, footer, and content areas. For example, it might retrieve the layout...

Fileupload using AngularJS in asp.net c#

Fileupload using AngularJS in asp.net c# AngularJS built-in ng-model directive. I added an attribute called ng-files in to the file input element. Now, I need to  create a directive in the controller matching with the attribute  The attribute has a function named getTheFiles() with a parameter $files . I’ll initialize the parameter $files in my directive and later call the function getTheFiles() using the controller’s scope, along with $files parameter. <!DOCTYPE html> <html> <head>   <title>AngularJS File Upoad Example with $http and FormData</title>   <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js"></script> </head> <body ng-app="fupApp">     <div ng-controller="fupController">         <input type="file" id="file1" name="file" multiple        ...

How Directives are compiled in angularjs?

AngularJS always operates on DOM node. We are not able to do any notice when HTML page loads. It parse automatically into DOM. Compilation of HTML happens in three steps which is pointed below. 1.    In angularjs $compile is use to traverse the DOM and looks for directive. It find each directive and add it into the list of directive. 2.    It is use to sort the list of directive by their priority when the entire DOM has been traversed. Each directive has own compilation function to be executed and each have chance to modify by itself. Each compile function return linking function and then it is use to composed into combined linking function and return it. 3.    $compile relations the template with the choice by calling the joint linking function from the earlier step. This in turn will request the connecting function of the separate directives, process listeners on the elements and set up $watch with the scope as each directive is organised to...

XM Cloud content sync from prod to uat or UAT to prod step by step

When working with Sitecore, it’s common to need content synchronization across environments. Today, I’ll walk you through the steps to sync content from Production to UAT/TEST and vice versa. Steps to Follow 1. Set Up Your Workspace Create a folder on your computer where you will manage the script files and exported data. Open the folder path in PowerShell to begin scripting. We need to run some scripts in PowerShell to update the folder with the basic requirements for syncing content. PS C:\Soft\ContentSync> dotnet new tool-manifest PS C:\Soft\ContentSync> dotnet nuget add source -n Sitecore https://nuget.sitecore.com/resources/v3/index.json PS C:\Soft\ContentSync> dotnet tool install Sitecore.CLI PS C:\Soft\ContentSync> dotnet sitecore cloud login If the above error occurs, you will need to run a different command to resolve the issue. PS C:\Soft\ContentSync> dotnet sitecore init now, Again run above command to open and authenticate with XM Cloud. It will be there a...