I have an application in asp .net mvc 4 as follows:
1.ProductsController.cs
namespace MvcApplication2.Controllers
{
public class ProductsController : Controller
{
//
// GET: /Products/
[HttpGet]
public ActionResult Products()
{
List<Product> prList = new List<Product>();
Product p1 = new Product();
p1.ProductName = "J & J";
p1.Price = 40;
p1.Ratings = 5;
prList.Add(p1);
Product p2 = new Product();
p2.ProductName = "Himalaya";
p2.Price = 20;
p2.Ratings = 2;
prList.Add(p2);
return View(prList);
}
[HttpPost]
public ActionResult Products(FormCollection prList,List<MvcApplication2.Models.Product> fg)
{
return View(prList);
}
}
}
2. ProductList.cs
namespace MvcApplication2.Models
{
public class Product
{
public string ProductName { get; set; }
public int Price { get; set; }
public int Ratings { get; set; }
}
}
3. Products.cshtml
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Products</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
<script src="~/Scripts/jquery-3.2.1.min.js"></script>
</head>
@model IEnumerable<MvcApplication2.Models.Product>
@using (@Html.BeginForm("Products", "Products", FormMethod.Post))
{
<body>
<div style="width:100%;height:100%;position: relative ">
<div style="width:100%;top:0px;height:40px;position:relative;background-color:purple">
<input type="submit" value="Sort price" style="float : right;width:30px;" id="SearchId" />
@Html.TextBox("Search Box", null, new { @style = "float:right;width:80px "});
<input type="submit" value="submit" />
</div>
<div id="tableDiv">
<table id="tableId">
<tr>
<th>Name</th>
<th>Price in Rs.</th>
<th>Ratings</th>
</tr>
@foreach (var drawing in Model)
{
<tr>
<td>@drawing.ProductName</td>
<td>@drawing.Price</td>
<td>@drawing.Ratings</td>
</tr>
}
</table>
</div>
</div>
</body>
}
</html>
Whenever I navigate to http://localhost:5858/Products/Products and click and on submit , the contol comes to [HttpPost] in Products methods, but the model is always empty .
What is it that I am missing here?I am expecting the same model to be returned when the page was loaded , why is it that the model is becoming empty?
Search_Box, so there's nothing to bind. Use@Html.EditorFor(m => ...).