2016-10-22 3 views
0

Ich habe ein Ansichtsmodell mit 2 Eigenschaften: eine ist eine Liste von Elementen Klassenobjekte und die andere ist ein Objekt der Auftragsklasse. Ich mag die Summe des Preises von Artikeln ListeWert Bindung an Eigenschaft in cshtml

Hier in order.price berechnet zeigen, ist Ansichtsmodell:

public class PlaceOrderViewModel 
{ 
    public Orders Order { get; set; } 
    public List<Items> Items { get; set; } 
} 

Hier Artikel Modell:

public class Items 
{ 
    public long Id { get; set; } 
    public long OrderId { get; set; } 
    public int ItemType { get; set; } 
    public string Detail { get; set; } 
    public int ItemsCount { get; set; } 
    public int Price { get; set; } 
} 

Ich bin auf der Suche nach so etwas wie dies,

@Html.DisplayFor(model => model.Order.Price, new { Value = @Model.Items.Sum(s => s.Price)}) 

Ich habe dies versucht, aber das funktioniert nicht für mich.

Ich möchte den Summenwert mit der Eigenschaft order.price binden. Irgendwelche Hilfe?

+0

'DisplayFor()' kein HTML-Element erzeugen - nur Text (die 'neuen {Wert = @ Model.Items.Sum (s => sPrice)} 'tut nichts, weil nur Eingaben ein' value' Attribut haben. Sie können '

@Model.Items.Sum(s => s.Price)
' oder besser verwenden, setzen Sie den Wert von 'Order.Price' im Controller, bevor Sie das Modell an die Ansicht übergeben. –

Antwort

1

Angenommen, Sie dieses:

public class Order 
{ 
    public int Id { get; set; } 
    public List<Items> Items { get; set; } 
    ... 
    public int TotalPrice 
    { 
     get 
     { 
      return Items == null ? 0 : Items.Sum(p => p.Price); 
     } 
    } 
} 

Und sollte Ihrer Ansicht nach haben:

@Html.DisplayFor(model => model.Order.TotalPrice) 
Verwandte Themen