Ich habe mein ViewModel, und ich habe meinen Controller korrekt aus dem ViewModel anzuzeigen, aber ich bin mir nicht sicher, wie ich das ViewModel bearbeitbar machen könnte, um die bearbeiteten Daten zurück zum Model zu senden. Ich möchte nur das OrderArchiveViewModel bearbeiten, nicht die DetailsC# Bearbeiten von ViewModel
ViewModel;
public class OrderArchiveViewModel
{
public int OrderId { get; set; }
public System.DateTime OrderDate { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string PostalCode { get; set; }
public decimal Total { get; set; }
public bool HasBeenShipped { get; set; }
public List<OrderDetailArchive> Details { get; set; }
}
public class OrderDetailArchive
{
public string Title { get; set; }
public string Colour { get; set; }
public int Quantity { get; set; }
public decimal UnitPrice { get; set; }
}
Steuerung;
[Authorize(Roles = "Administrator")]
public ActionResult Index()
{
List<T_shirt_Company_v3.ViewModels.OrderArchiveViewModel> list = (from o in new TshirtStoreDB().Orders
.OrderBy(o => o.OrderDate)
.Select(o => new OrderArchiveViewModel()
{
OrderId = o.OrderId,
Address = o.Address,
FirstName = o.FirstName,
LastName = o.LastName,
City = o.City,
OrderDate = o.OrderDate,
PostalCode = o.PostalCode,
Total = o.Total,
HasBeenShipped = o.HasBeenShipped,
Details = (from d in o.OrderDetails
select new OrderDetailArchive
{
Colour = d.Product.Colour,
Quantity = d.Quantity,
Title = d.Product.Title,
UnitPrice = d.UnitPrice
}).ToList()
}).ToList()select o).ToList();
ViewBag.ShippedMessage = list.Where(w => w.HasBeenShipped).Any() ? "Order has been shipped" : "Order is being processed";
return View(list);
}
Das typische Muster besteht darin, eine Aktualisierungsaktion für Ihren Controller zu erstellen. Es würde sein eigenes Ansichtsmodell haben, in dem Sie die editierbaren Felder auswählen. Dann müssen Sie Ihrem Raster, das mit dieser Aktion verknüpft ist, eine Bearbeitungsschaltfläche hinzufügen. Selben für erstellen, löschen. Siehe http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/implementing-basic-crud-functionality-with-the- entity-framework-in-asp -net-mvc-application –