No parameterless constructor defined for this object

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`

No, it means you tried to call a constructor that requires one parameter:

With no parameter specified. (You dont show us the invocation of OrderController, so I cant help you there).

Go find wherever you create your OrderController, and give it a parameter for orderServices.

Edit: I assume you’re talking about OrderController. I cant see which line its telling you is dying. If its a different constructor, same thing applies: You tried to create something without a parameter, and its constructor needs one or more.

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.