Introduction

This article explains how to dynamically bind the data of a view to the model and retrieve the data from the model by the controller in a Web API.

Let's see the example of dynamically binding the view data.

Step 1

First create a Web API application as in the following:

Step 2

Create a model class "Bind.cs".

Add the following code:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Linq;
  5. using System.Web;
  6. namespace Databind.Models
  7. {
  8. public class Bind
  9. {
  10. [DisplayName("Your Name:")]
  11. public string F_Name
  12. {
  13. get;
  14. set;
  15. }
  16. [DisplayName("Your Last name")]
  17. public string L_Name
  18. {
  19. get;
  20. set;
  21. }
  22. [DisplayName("Your Address")]
  23. public string Add
  24. {
  25. get;
  26. set;
  27. }
  28. [DisplayName("Your State")]
  29. public string state
  30. {
  31. get;
  32. set;
  33. }
  34. }
  35. }

Step 3

In the "HomeController.cs" file write some code. This file exists:

Add the following code:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. using Databind.Models;
  7. namespace Databind.Controllers
  8. {
  9. public class HomeController : Controller
  10. {
  11. public ActionResult Index()
  12. {
  13. return View();
  14. }
  15. [HttpPost]
  16. public ActionResult ClientInfo(Bind bind)
  17. {
  18. return View(bind);
  19. }
  20. }
  21. }

Step 4

Create a View Page, "Index.aspx" as in the following:

Add the following code:

  1. <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<Databind.Models.Bind>" %>
  2. <!DOCTYPE html>
  3. <html>
  4. <head runat="server">
  5. <meta name="viewport" content="width=device-width" />
  6. <title></title>
  7. </head>
  8. <body>
  9. <% using (Html.BeginForm("ClientInfo","Home",FormMethod.Post)) %><%{ %>
  10. <div>
  11. <center>
  12. <h2>Enter Details:</h2>
  13. <table style="font-family:Calibri" >
  14. <tr>
  15. <td> <%: Html.LabelFor(m => m.F_Name) %> </td>
  16. <td> <%: Html.TextBoxFor(m => m.F_Name) %> </td>
  17. </tr>
  18. <tr>
  19. <td> <%: Html.LabelFor(m => m.L_Name) %> </td>
  20. <td> <%: Html.TextBoxFor(m => m.L_Name) %> </td>
  21. </tr>
  22. <tr>
  23. <td> <%: Html.LabelFor(m => m.Add) %> </td>
  24. <td> <%: Html.TextBoxFor(m => m.Add) %> </td>
  25. </tr>
  26. <tr>
  27. <td> <%: Html.LabelFor(m=>m.state) %></td>
  28. <td> <%: Html.TextBoxFor(m => m.state) %> </td>
  29. </tr>
  30. <tr>
  31. <td colspan="3" align="center">
  32. <input type="submit" value="Submit"/>
  33. </td>
  34. </tr>
  35. <% } %>
  36. </table>
  37. </center>
  38. </div>
  39. </body>
  40. </html>

Step 5

Create another View Page "ClientInfo.aspx". We use the same procedure as in Step 3.

data7.jpg

Add the following code:

  1. <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<Databind.Models.Bind>" %>
  2. <!DOCTYPE html>
  3. <html>
  4. <head runat="server">
  5. <meta name="viewport" content="width=device-width" />
  6. <title>ClientInfo</title>
  7. </head>
  8. <body>
  9. <div>
  10. <h2>Welcome! <%: Html.Label(ViewData.Model.F_Name)%>
  11. <%: Html.Label(ViewData.Model.L_Name)%></h2>
  12. <h2>Belongs to <%: Html.Label(ViewData.Model.Add)%>
  13. <%: Html.Label(ViewData.Model.state) %>
  14. </h2>
  15. </div>
  16. </body>
  17. </html>

Step 6

Execute the application; press "F5". The output looks as in the following:

data8.jpg

Fill in the following detail:

data9.jpg

Click the "Submit" button.

data10.jpg