ASP.NET MVC View to Controller Operation

0
ASP.NET MVC View to Controller  Operation:- 


 We can pass View Data (Html form or razor form elements ) using Four different ways


1)    using FormCollection:-      


FormCollection is a predefined class that is used to store data using dictionary pattern means key=>value pair, the key will be HTML form element name, and value will be data of HTML form element.

Step for FormCollection Object:-

1)   Create Controller and define two different method 

      First Load Method or GET Method:-
   
      public ActionResult Index()
      {
           return View()
      }


      Action Method  or POST Method

      [HttpPost]
     public ActionResult Index(FormCollection obj)
      {
           return View()
      }



   Create View on right-click on Getting method:-  it will create index.cshtml

    Write following code

   @{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
      <form  method="post">
          <input type="text" name="txtp" placeholder="Enter P" />
          <br />
          <br />
          <input type="text" name="txtr" placeholder="Enter Rate" />
          <br />
          <br />
          <input type="text" name="txtt" placeholder="Enter Time" />
          <br />
          <br />
          <input type="submit" name="btnsubmit" value="Click" />
      </form>
        @ViewBag.Data 
    </div>
</body>
</html>


modify the code of Action Method:-

 [HttpPost]
        public ActionResult Index(FormCollection obj)
        {
            float si = float.Parse(obj["txtp"].ToString())*float.Parse(obj["txtr"].ToString())*float.Parse(obj["txtt"].ToString())/100;
            ViewBag.Data = "result is " + si;
            return View();
        }



2)    using RequestObject :-  

Request Object is the reference of HttpRequest class, It will directly get data from the request object and assign it into a variable, if we want to provide a different action method name for HttpGet and HttpPost then we can prefer Request Object.

      Create Controller with Two different methods for HttpGet and HttpPost:-
 
      public ActionResult Index()
        {
            return View();
        }

         [HttpPost]
         public ActionResult SwapCode()   //using Request 
         {
           
             return View();

         }

       Create a view on right-click on GET method and write following code:-

       @{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
     <form action="swap/SwapCode" method="post">
         <input type="text" name="txtnum1" placeholder="Enter First Number" />
         <br />
         <br />
         <input type="text" name="txtnum2" placeholder="Enter second number" />
         <br />
         <br />
         <input type="submit" name="btnsubmit" value="Click" />
     </form> 
    </div>
</body>
</html>


Modify Action Method Code:-

         [HttpPost]
         public ActionResult SwapCode()   //using Request 
         {
             int a = int.Parse(Request["txtnum1"]);
             int b = int.Parse(Request["txtnum2"]);
             a = a + b;
             b = a - b;
             a = a - b;
             ViewBag.data = "a=" + a + "b=" + b;
             return View();
         }


3)  using Parameters:-  

 We can create parametrized  Action Method which will receive data of Form Element using Element name.

Step for using Parameters:-

Create Load Action Method:-

 public ActionResult Index()
        {
            return View();
        }

  [HttpPost]
        public ActionResult SwapCode()   //using Request
        {
       
            return View();
        }

      Create view on right click on Get method
     @{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
     <form action="swap/SwapCode" method="post">
         <input type="text" name="txtnum1" placeholder="Enter First Number" />
         <br />
         <br />
         <input type="text" name="txtnum2" placeholder="Enter second number" />
         <br />
         <br />
         <input type="submit" name="btnsubmit" value="Click" />
     </form> 
    </div>
</body>
</html>
  
modify code of Action Method:-
[HttpPost]
        public ActionResult SwapCode(String txtnum1,String txtnum2)   //using Request 
        {
            int a = int.Parse(txtnum1);
            int b = int.Parse(txtnum2);
            a = a + b;
            b = a - b;
            a = a - b;
            ViewBag.data = "a=" + a + "<br>b=" + b;
            return View();
        }


4)   using Model Object or MVC Approach:-

It provides an MVC Design pattern we create model class according to form requirement. The model class will be bind by view using a strongly typed view object pattern.

Create two different methods in the controller for Get and POST, Create Model Object as a parameter in the POST method, and define code.

Controller Object will load dynamic view and get data of view under action method.

Step for Model Object:-

1) Create Controller with HttpGet method

   public class SIController: Controller
    {
        //
        // GET: /SI/

        public ActionResult Index()
        {
            return View();
        }
   

    }

2)  Create Model Class using right-click on Model Folder

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

namespace BasicMVCExample.Models
{
    public class SICalc
    {
        public float P { get; set; }
        public float R { get; set; }
        public float T { get; set; }
    }
}

3)  Create Action Method under Controller then create Strongly typed view on right-click on Action Method using Template Create Option

        [HttpPost]
         public ActionResult Index(SICalc obj)
        {
         
            return View();
        }


4) Right-click on Get method and add Model Object under view. 
Automatic generated View by Create Template It is called Strongly typed view:-

@model BasicMVCExample.Models.SICalc

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm()) {
        @Html.ValidationSummary(true)
 
        <fieldset>
            <legend>SICalc</legend>
 
            <div class="editor-label">
                @Html.LabelFor(model => model.P)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.P)
                @Html.ValidationMessageFor(model => model.P)
            </div>
 
            <div class="editor-label">
                @Html.LabelFor(model => model.R)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.R)
                @Html.ValidationMessageFor(model => model.R)
            </div>
 
            <div class="editor-label">
                @Html.LabelFor(model => model.T)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.T)
                @Html.ValidationMessageFor(model => model.T)
            </div>
 
            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>
    }
 
    <div>
     @ViewBag.result
    </div>
</body>
</html>

     


5)  Modify Action Method Code and Write program
      [HttpPost]
         public ActionResult Index(SICalc obj)
        {
            ViewBag.result = (obj.P * obj.R * obj.T) / 100;
            return View();
        }









Tags

Post a Comment

0Comments

POST Answer of Questions and ASK to Doubt

Post a Comment (0)