Tuesday, July 25, 2017

ASP.Net MVC - Multiple Models in Single View - Part1

In MVC we cannot use multiple model tag on a view. But Many times we need to pass multiple models from controller to view or we want to show data from multiple model on a view. So In this post we will see the different ways to bind or pass the multiple models to single view.

Problem Statement

Lets suppose we have two models Student and Course and we need to show the the list of Students and Courses in a single view.

Below are the model definition for Student and Course
public class Student
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }       
}

public class Course
{
    public int CourseID { get; set; }
    public string CourseName { get; set; }
}

Below is the Repository class which have two method for returning the list of Students and Courses
public class Repository
{
    public static List<student> GetStudents()
    {
          return new List<student>{ new Student() { StudentID = 1, StudentName = "Manish" },
                 new Student() { StudentID = 2, StudentName = "Prashant" },
                 new Student() { StudentID = 3, StudentName = "Deepak" }
                 };
     }
     public static List<course> GetCourses()
     {
          return new List<course> {
                 new Course () {  CourseID = 1, CourseName = "Chemistry"},
                 new Course () {  CourseID = 2, CourseName = "Physics"},
                 new Course () {  CourseID = 3, CourseName = "Math" },
                 new Course () {  CourseID = 4, CourseName = "Computer Science" }
                 };
     }
}

Output

Output of all approaches will be similar to the screenshot shown below:
multiplemodel-asp-mvc

Solutions to achieve

There are many ways of using multiple models in a view, most frequently used are given below:
  • Dynamic
  • ViewData
  • ViewBag
  • ViewModel
  • Tuple
  • ViewComponent(ASP.NET MVC 6 feature)

Thursday, July 13, 2017

Deserialize XML to C# object

In this post we will see the simple approach to deserialize XML to C# object.

Our XML String


string xmlString = "<Students><Student><Id>1</Id><Name>Manish Dubey</Name></Student><Student><Id>2</Id><Name>Pankaj</Name></Student></Students>";

Create our class


public class Student
{
  public int Id { get; set; }
  public string Name { get; set; }
}

Create XML Serializer and StringReader Object


//First argument is type of object and second argument is root attribute of your XML string/source

  XmlSerializer serializer = new XmlSerializer(typeof(List), new XmlRootAttribute("Students"));
  StringReader stringReader = new StringReader(xmlString);;

At last, deserialize XMl to C# object


List studentList = (List)serializer.Deserialize(stringReader);

Output

deseralize-xml-to-c#-object
Add caption


Friday, July 7, 2017

ASP.Net MVC - Custom Model Binding

custom-model-binding
In last article, we have discussed about what is ASP.NET Model binding and saw a basic introduction to the Model Binder. In this post we will see creating Custom Model Binding in ASP.Net MVC with simple example.

Model Binder in ASP.NET MVC

For model binding MVC uses the following types-

IModelBinder interface - This defines methods that are required for a Model Binder, like the BindModelAsync method. This method is responsible for binding a model to some values using ModelBindingContext

IModelBinderProvider interface - This interface contains methods that enables dynamic implementation of model binding for classes which implement the IModelBinder interface. This is used to manage the custom binder for the type of data posted by the end-user in views.

Creating Custom Model Binder

We creating our custom model binder by implementing the IModelBinder and IModelBinderProvider interfaces. Let see how we will do that.

Note :I have used ASP.Net MVC Core project here.All the codes are in ASP.Net MVC Core.

Monday, July 3, 2017

ASP.Net MVC Model Binding

 Model Binding

Model Binding

What is Model Binding?

Model Binding in ASP.Net MVC maps the data from HTTP request to action method parameters. These parameters may be simple types such as string, integer or they may be complex type. It is a great feature as it relieves developer from writing all the type casting and “HTML-Model mapping code”. The Model binder is capable of retrieving the data from HTML form variables, POSTed variables and files, query string parameters and the values added in the routes.


How model binding works?

When MVC receives HTTP request, it routes the request to a specific action method of a controller. It determines which action method is going to execute based on what is in the route data, then it maps values from the HTTP request to action method’s parameter(s). For ex. Consider the below URL-

http://abc.com/books/edit/2

Wednesday, October 28, 2015

ASP.NET 4.5 Architecture


Request Processing 


  1. IIS gets the request
  2. Looks up a script map extension and maps to aspnet_isapi.dll
  3. Code hits the worker process (aspnet_wp.exe in IIS5 or w3wp.exe in IIS6)
  4. .NET runtime is loaded
  5. IsapiRuntime.ProcessRequest() called by non-managed code
  6. IsapiWorkerRequest created once per request
  7. HttpRuntime.ProcessRequest() called with Worker Request
  8. HttpContext Object created by passing Worker Request as input
  9. HttpApplication.GetApplicationInstance() called with Context to retrieve instance from pool
  10. HttpApplication.Init() called to start pipeline event sequence and hook up modules and handlers
  11. HttpApplicaton.ProcessRequest called to start processing
  12. Pipeline events fire
  13. Handlers are called and ProcessRequest method is fired
  14. Control returns to pipeline and post request events fire

If You Enjoyed This Post Please Take 5 Seconds To Share It.

^ Scroll to Top hgpromo