Java, .NET, PHP, PYTHON, ANGULAR, ML, Data Science, Testing, CI Tutorials in Easy Languages.

"Best Software Training, Internship, Project Development center of Indore India, Helpline 780506-3968"

ASP.NET MVC View  to Controller  Operation:-  We can pass View Data (Html form or razor form) using Four different ways

1)    using FormCollection:-      


FormCollection is a predefined class which is used to store data using dictionary pattern means key=>value pair,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 Get 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 :-  

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

Create Controller  with Two different method for HttpGet and HttpPost 
      public ActionResult Index()
        {
            return View();
        }
         [HttpPost]
         public ActionResult SwapCode()   //using Request 
         {
           
             return View();

         }

       Create 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 provide MVC Design pattern we create model class according to form requirement.

Model class will be bind by View using Strongly typed view object pattern

Create Two different method in  controller for GET and POST ,Create Model Object as parameter in 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();
        }

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>

     


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









Post a Comment

If you have any doubt in programming or join online classes then you can contact us by comment .

Previous Post Next Post