2016-03-22 46 views
-1

上改變這個變量聲明基地我在 「_sharedView.cshtml」 下面的代碼:如何if語句來切換情況下

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

模型

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

AStuff模型

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; } 
} 

A控制器

return PartialView("_sharedView",model); 

Bstuff與Astuff(Model,Controller)基本相同。

如何更改上面的代碼來切換大小寫?

更新: 模型是基於什麼模型傳遞來查看。

更新: 添加更多細節。

+1

什麼是'modellStuff'的類型?它實現了IEnumerable接口嗎? –

+0

是的,它確實實現了IEnumerable接口。 – vinh123456789

回答

2

試試這個。將var更改爲IEnumerable並確保您的AStuff,BStuff等實現此接口。

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

我已經嘗試過,但它顯示以下錯誤「隱式類型局部變量必須初始化」。我想更改爲切換案例,因爲會有更多的案例:CStuff,DStuff,... – vinh123456789

+0

您無法使用var定義modelStuff而無需賦值,它需要被定義爲Model,然後設置爲默認值 – juharr

+0

更改'var'改爲'IEnumerable'並確保你的AStuff,BStuff等實現了這個接口。 –