Hi Team
I have a controller calls a View, when i try to launch this View it reads a null property from the controller. How do i fix this problem? I have removed at sign as they represent a link i dont have enough reputation for hyperlinks.
//model public class OrderLine { public int OrderId { get; set; } public int LineNumber { get; set; } public string ProductCode { get; set; } public string ProductType { get; set; } public decimal CostPrice { get; set; } public decimal SalesPrice { get; set; } public int Quantity { get; set; } public List<OrderLine> OrderLines { get; set; } } // controller // OrderLine/Edit/{LineNumber} public ActionResult Edit(int lineNumber) { OrderLine orderLine = GetOrderLineByLineNumber(lineNumber); if (orderLine == null) { return ttpNotFound(); } return View(orderLine); } // Helper method to retrieve an order line by line number private OrderLine GetOrderLineByLineNumber(int lineNumber) { string connectionString = "Data Source=DESKTOP-C5QD55P\\SQLEXPRESS;Initial Catalog=SalesOrder;Integrated Security=True"; OrderLine orderLine = null; using(SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string query = "SELECT * FROM OrderLine WHERE LineNumber = LineNumber"; SqlCommand command = new SqlCommand(query, connection); command.Parameters.AddWithValue("LineNumber", lineNumber); SqlDataReader reader = command.ExecuteReader(); if(reader.Read()) { orderLine = new OrderLine { LineNumber = (int)reader["LineNumber"], ProductCode = reader["ProductCode"].ToString(), ProductType = reader["ProductType"].ToString(), CostPrice = (decimal)reader["CostPrice"], SalesPrice = (decimal) reader["SalesPrice"], Quantity = (int) reader["Quantity"] }; } reader.Close(); } return orderLine; // Return the retrieved order line or null if not found }
// view model OrderApplicationXML.Models.OrderLine using (Html.BeginForm("Edit", "OrderHeader", new { lineNumber = Model.LineNumber }, FormMethod.Post)) { Html.HiddenFor(model => model.OrderId) <div class="form-group"> Html.LabelFor(model => model.ProductCode) Html.TextBoxFor(model => model.ProductCode, new { class = "form-control" }) </div> <div class="form-group"> Html.LabelFor(model => model.ProductType) Html.TextBoxFor(model => model.ProductType, new { class = "form-control" }) </div> <div class="form-group"> Html.LabelFor(model => model.CostPrice) Html.TextBoxFor(model => model.CostPrice, new { class = "form-control" }) </div> <div class="form-group"> Html.LabelFor(model => model.SalesPrice) Html.TextBoxFor(model => model.SalesPrice, new { class = "form-control" }) </div> <div class="form-group"> Html.LabelFor(model => model.Quantity) Html.TextBoxFor(model => model.Quantity, new { class = "form-control" }) </div> <button type="submit" class="btn btn-primary">Update</button> }