2016-07-21 17 views
0

Ich habe einen Suchbildschirm, wo mehrere Felder zu suchen sind und es gibt eine Teilansicht, um das gesuchte Ergebnis anzuzeigen. Nun habe ich ein View-Modell erstellt, in dem alle Suchfelder zusammen mit einer Liste der Klasse selbst stehen.ASP.NET MVC - Benötigen Sie Hilfe bei der Entscheidung, wie zwei Modelle in einer Ansicht übergeben werden?

public class ClaimDataViewModel 
{ 
    public string CLAIM_NUM { get; set; } 
    public string LINE_SUFFIX { get; set; } 
    public string CLAIMANT_NAME { get; set; } 
    public System.DateTime DUE_DATE { get; set; } 
    public string MRP_LINE_STATUS { get; set; } 
    public string CLAIM_HANDLER_NAME { get; set; } 
    public decimal FULL_VALUE_AMT { get; set; } 

    public IEnumerable<ClaimDataViewModel> ClaimDataViewModelList { get; set; } 
} 

Ich bin mit dem Modellinformationen weitergeben an die Steuerung und dann die Liste innerhalb des Ansichtsmodell ausfüllen und zurück in die Ansicht übergeben. Aufrufen der Teilansicht und Übergeben der Liste an sie.

Bitte lassen Sie mich wissen, wenn dies richtig ist oder sollte ich Tuple verwenden, um das Viewmodel zusammen mit der Liste von Viewmodel zu übergeben.

+1

A 'Tuple' wird nie sehen funktionieren, wenn Sie für die Bearbeitung von Daten anzuzeigen ist. Was Sie tun, ist in Ordnung. –

+0

Danke Stephen. Jetzt habe ich eine Frage, die es schadet, eine Liste der Klasse in der Klasse selbst zu erstellen ?? –

+0

Nein, natürlich nicht. Und es ist üblich für hierarchische Daten (zum Beispiel, um Ordner oder Menüeinträge darzustellen, wo Sie Eigenschaften für ein Menü haben, und dann 'List

ChildMenus') –

Antwort

0

können Sie auch Ansichtsmodell, weil es leicht und schnell

//Product.cs 
public class Product 
{ 
    public Product() { Id = Guid.NewGuid(); } 
    public Guid Id { get; set; } 
    public string ProductName { get; set; } 

    public virtual ProductCategory ProductCategory { get; set; } 

} 

//ProductCategory.cs 
public class ProductCategory 
{ 
    public int Id { get; set; } 
    public string CategoryName { get; set; } 

    public virtual ICollection<Product> Products { get; set; } 
} 

hier Ihr Viewmodel ist.

public class ProductViewModel 
{ 
    public Guid Id { get; set; } 

    [Required(ErrorMessage = "required")] 
    public string ProductName { get; set; } 

    public int SelectedValue { get; set; } 

    public virtual ProductCategory ProductCategory { get; set; } 

    [DisplayName("Product Category")] 
    public virtual ICollection<ProductCategory> ProductCategories { get; set; } 
} 

Warum verwenden wir Ansichtsmodell

  1. Wenn Sie mehr als eine Sache auf eine stark typisierte Ansicht übergeben müssen (die Best Practice), Sie in der Regel eine erstellen wollen separate Klasse dazu.
  2. Auf diese Weise können Sie Ihre Ansichtsmodell anders als Ihr Domänenmodell für attributbasierte Validierung Szenarien
  3. verwendet werden kann zur Validierung der Daten Form und Format zu helfen. z. B. brauchen Sie einen Datums- oder Geldwert, der auf eine bestimmte Weise formatiert ist? ViewModel ist der beste Ort dafür.
  4. Die Verwendung eines Ansichtsmodell kann die Interaktion zwischen Modell machen und einfacher
+1

Ich denke, Sie haben einen gültigen Punkt, um Ihre Antwort zu rechtfertigen. aber ich denke, es hängt von der Bedingung ab. Was zu Tuple oder Viewmodel verwenden –

+0

OP verwendet bereits ein Ansichtsmodell. –

Verwandte Themen