2016-03-22 6 views
-1

Ich habe den folgenden Code in "_sharedView.cshtml":Wie auf diese Variable Erklärung Basis zu ändern, wenn Anweisung Fall wechseln

var modelStuff = controller == "A" ? Model.AStuffs : Model.BStuffs; 
@foreach (var c in modelComment) 
{ 
    <span>@c.Content</span> 
} 

Ein Modell

public class A 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; }  
    public virtual List<AStuff> AStuffs { get; set; } 
} 

AStuff Modell

public class AStuff 
{ 
    [Key] 
    public int Id { get; set; } 
    public int AId { get; set; } 
    public string Content { get; set; } 
    public virtual A A { get; set; } 
} 

Ein Steuergerät

return PartialView("_sharedView",model); 

Bstuff ist im Grunde das gleiche wie Astuff (Model, Controller).

Wie wird der obige Code geändert, um den Fall zu wechseln?

Update: Modell ist anders Basis auf welchem ​​Modell zu sehen.

Aktualisierung: Fügen Sie weitere Details hinzu.

+1

Was ist 'modellStuff's Typ? Implementiert es die IEnumerable-Schnittstelle? –

+0

Ja, es implementiert IEnumerable-Schnittstelle. – vinh123456789

Antwort

2

Versuchen Sie dies. Ändern Sie var zu IEnumerable und stellen Sie sicher, dass Ihre AStuff, etc. diese Schnittstelle implementieren.

IEnumerable modelStuff = null; 
switch (controller) 
{ 
    case "A": 
     modelStuff = Model.AStuff; 
     break; 
    case "B": 
     modelStuff = Model.BStuff; 
     break; 
    default: 
     // do stuff what should be done here 
} 

if (modelStuff != null) 
    foreach (var s in modelStuff) 
    { 
     //do stuff 
    } 
+0

Ich habe das versucht, aber es zeigt den folgenden Fehler "implizit typisierte lokale Variablen müssen initialisiert werden". Ich möchte ändern, um den Fall zu wechseln, weil es mehr Fall geben wird: CStuff, DStuff, .... – vinh123456789

+0

Sie können nicht verwenden, um ModelStuff ohne eine Zuordnung zu definieren, die es als Modell definiert werden muss und auf einen Standardwert – juharr

+0

ändern 'var' zu' IEnumerable' und stellen Sie sicher, dass Ihre AStuff, BStuff usw. diese Schnittstelle implementieren. –