2013-06-24 95 views
1

有沒有在C#中存儲幾個不同的視圖模型對象在var數組中的方法?將兩個不同的對象存儲在var數組中?

例如:

var user_model = db.Database.SqlQuery<User>("SELECT * FROM [User]").ToList(); 
var product_model = db.Database.SqlQuery<Product>("SELECT * FROM [Product]").ToList(); 

var my_models = new[]{ user_model, product_model }; 
string[] object_titles = { "User" , "Product" }; 

for(int i=0 ; i<my_models.Length ; i++){ 

if(my_models[i].Count() != 0) 

    return View("../"+ object_titles[i] +"/Index", my_models[i]); 

} 

不幸的是上面的例子不工作,我不知道如何解決這個問題。 任何人都可以給我一個提示,如何解決它?

+0

有你有什麼異常? –

+0

「不起作用」對你遇到的任何問題都是一個絕對可怕的描述,我敢肯定,它不是任何你得到的錯誤信息的文本... –

+0

這段代碼應該做什麼?我有點困惑? –

回答

1
var my_models = new IEnumerable<object>[] { user_model, product_model }; 

試試這個

+0

你最好使用接口或基類。每次回到對象並不是最好的方法,因爲查看自己的列表並沒有真正指出您正在查看的對象的類型,並且使其在其他區域的編程更加困難。 – tsells

+0

這個很好,謝謝! – amaier

3

原諒我,如果我missunderstood,但是,這是不是可以非常非常容易:

var user_model = db.Database.SqlQuery<User>("SELECT * FROM [User]").ToList(); 
var product_model = db.Database.SqlQuery<Product>("SELECT * FROM [Product]").ToList(); 

if(user_model.Any()) 
{ 
    return View("../User/Index", user_model); 
} 
else if(product_model.Any()) 
{ 
    return View("../Product/Index", product_model); 
} 
// return a default view or some other magic ... 
+0

是的,我真的解決了這個問題,但我使用了比兩個更多的對象。所以這將是一個很長的陳述。 ;) – amaier

相關問題