2012-06-06 131 views
0

我需要添加數據使用LINQ 查看模型我的視圖模型爲:如何使用LINQ將值傳遞給ViewModel?

public class SearchScrapViewModel 
{ 
public WClass wClass{get; set;} 
public SClass sClass{get; set;} 
public YClass yClass { get; set; } 
} 

public class WClass 
{ 
public string title { get; set; } 
public string link { get; set; } 
} 
public class SClass 
{ 
public string title { get; set; } 
public string link { get; set; } 
} 
public class YClass 
{ 
public string title { get; set; } 
public string link { get; set; } 
} 

,我需要使用這3類3種不同的LINQ查詢,然後將數據傳遞到return View(SearchScrapViewModel);

var wikians = //LINQ Logic 
select new SearchScrapViewModel 
{ 
wClass.link = link.Attributes["href"].Value, //Error: I am not able to add to wClass 
wClass.title = link.InnerText 
}; 

和其他類似

然後傳遞給return View(SearchScrapViewModel);,這樣我就可以訪問該控制器視圖中的所有3個類

如何做到這一點?

回答

1

你忘了另外

select new SearchScrapViewModel { 
    wClass = new WClass { 
     link = link.Attributes["href"].Value, 
     title = link.InnerText 
    } 
}; 

,你可以做WClass(和的sclass和YClass)一struct,而不是一類,那麼就不需要進行實例化:創建一個實例您WClass的。但是,在這種情況下,您應該可以使用make the struct immutable

+0

好吧...我用這個...但現在如何通過...這是查看...我的意思是使用「返回視圖(SearchScrapViewModel)」不工作...我需要做一些改變viewmodel這樣我就可以使用這個主要的SearchScrapViewModel將所有的類數據傳遞給View。 – Man8Blue

0

LINQ並非萬能的,我不知道這是您尋找的最佳方法。我會建議看看Builder Pattern,來完成這個。如果你真的想,你可以在一個LINQ查詢做到這一點(使用對象初始化),但可能無法讀取作爲一個建設者乾淨會(但是這是我的兩分錢):

select new SearchScrapViewModel 
{ 
    wClass = new wClass{title = xyz, link = xyz}, 
    sClass = new sClass... 
    yClass = new yClass... 
} 
+0

我使用@Heinzi建議。但如何通過這個查看...我的意思是使用「返回視圖(SearchScrapViewModel)」不工作...我需要做一些改變viewmodel,以便我可以傳遞所有類數據查看使用這個主SearchScrapViewModel? – Man8Blue

0

我不清楚爲什麼你需要在你的例子中選擇語句。無論如何,你不能返回SearchScrapViewModel作爲你的返回,因爲這是一個類型而不是實例。除非你的代碼被簡化爲這篇文章,你需要linq,我會建議:

var wikians = 
new SearchScrapViewModel { 
    wClass = new WClass { 
     link = link.Attributes["href"].Value, 
     title = link.InnerText 
    } 
}; 

return View(wikians); 
相關問題