Hi Team
I am getting an error, basically i am creating asp.net mvc crud application uses business logic, entity framework. When i create a View and try to run the URL Order/Edit.cshtml file i get this error. " No parameterless constructor defined for this object." Does it mean i have an empty constructor? Which file must i make a fix so can continue?
// Controller.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SalesOrder.Models;
using SalesOrder.Services;
namespace SalesOrder.Controllers
{
public class OrderController : Controller
{
// declaring some objects.
private readonly OrderServices _orderServices;
// constructor.
public OrderController(OrderServices orderServices)
{
_orderServices = orderServices;
}
// GET: Order
public ActionResult Index()
{
List<OrderViewModel> orders = _orderServices.GetOrders();
return View(orders);
}
// GET:Order/Edit/5
public ActionResult Edit(int id)
{
OrderViewModel order = _orderServices.GetOrderById(id);
if(order == null)
{
return HttpNotFound();
}
return View(order);
}
// POST:Order/Edit/5.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(OrderViewModel order)
{
if(ModelState.IsValid)
{
_orderServices.UpdateOrder(order);
return RedirectToAction("Index");
}
return View(order);
}
}
}
// Model
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace SalesOrder.Models
{
public class OrderViewModel
{
public int OrderId { get; set; }
public string OrderNumber { get; set; }
public DateTime OrderDate { get; set; }
// Other order properties...
public List<OrderLine> OrderLines { get; set; }
}
// Model representing a single order line
public class OrderLine
{
public int OrderLineId { get; set; }
public string ProductCode { get; set; }
public int Quantity { get; set; }
// Other order line properties...
public int OrderId { get; set; } // Foreign key to Order table
public virtual OrderViewModel Orders { get; set; } // Navigation property
}
// Model representing a customer
public class Customer
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
// Other customer properties...
public virtual ICollection<OrderViewModel> Orders { get; set; } // Collection of orders for a customer
}
// Model representing a product
public class Products
{
public int ProductId { get; set; }
public string ProductCode { get; set; }
public string ProductName { get; set; }
// Other product properties...
public virtual ICollection<OrderLine> OrderLines { get; set; } // Collection of order lines for a product
}
public class OrderHeader
{
public string OrderNumber { get; set; }
public string OrderType { get; set; }
public string OrderStatus { get; set; }
public string CustomerName { get; set; }
public Nullable<System.DateTime> CreateDate { get; set; }
}
public class OrderHeaderStatus
{
public string OrderStatus { get; set; }
public virtual ICollection<OrderHeader> OrderHeaders { get; set; }
}
}
//Repository.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using SalesOrder.Models;
namespace SalesOrder.Repository
{
public class OrderRepository
{
private readonly SalesOrderEntities __salesOrder;
// constructor.
public OrderRepository(SalesOrderEntities salesOrder)
{
__salesOrder = salesOrder;
}
// get all orders
public List<OrderViewModel> GetOrders()
{
return __salesOrder.Orders.ToList();
}
// Get order by id.
public OrderViewModel GetOrderById(int id)
{
return __salesOrder.Orders.FirstOrDefault(o => o.OrderId == id);
}
//Get order by id.
public void UpdateOrder(OrderViewModel order)
{
__salesOrder.Entry(order).State = EntityState.Modified;
__salesOrder.SaveChanges();
}
}
}
// Services.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using SalesOrder.Models;
using SalesOrder.Repository;
namespace SalesOrder.Services
{
public class OrderServices
{
// creating some objects here.
private readonly OrderRepository _orderRepository;
// constructor.
public OrderServices(OrderRepository orderRepository)
{
_orderRepository = orderRepository;
}
// get all orders.
public List<OrderViewModel> GetOrders()
{
return _orderRepository.GetOrders();
}
// Get order by id.
public OrderViewModel GetOrderById(int id)
{
return _orderRepository.GetOrderById(id);
}
// update an existing order.
public void UpdateOrder(OrderViewModel order)
{
_orderRepository.UpdateOrder(order);
}
}
}
// Edit.cshtml
@model SalesOrder.Models.OrderViewModel
@using (Html.BeginForm("Edit", "Order", FormMethod.Post))
{
@Html.AntiForgeryToken()
<h2>Edit Order</h2>
<div>
@Html.LabelFor(model => model.OrderNumber)
@Html.EditorFor(model => model.OrderNumber)
@Html.ValidationMessageFor(model => model.OrderNumber)
</div>
<div>
@Html.LabelFor(model => model.OrderDate)
@Html.EditorFor(model => model.OrderDate)
@Html.ValidationMessageFor(model => model.OrderDate)
</div>
<div>
@Html.LabelFor(model => model.Customer)
@Html.EditorFor(model => model.Customer)
@Html.ValidationMessageFor(model => model.Customer)
</div>
<!-- Add additional fields for editing order details -->
<input type="submit" value="Save" />
}
// SalesOrderEntities.cs
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SalesOrder
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using SalesOrder.Models;
public partial class SalesOrderEntities : DbContext
{
public SalesOrderEntities()
: base("name=SalesOrderEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Customer> Customers { get; set; }
public virtual DbSet<OrderHeader> OrderHeaders { get; set; }
public virtual DbSet<OrderHeaderStatu> OrderHeaderStatus { get; set; }
public virtual DbSet<OrderLine> OrderLines { get; set; }
public virtual DbSet<Product> Products { get; set; }
public virtual DbSet<ProductType> ProductTypes { get; set; }
public virtual DbSet<OrderViewModel> Orders { get; set; }
}
}
````Preformatted text`