2011-05-13 39 views
4

讓剛剛說我有在剃刀像這樣的一些精通語法:剃刀法鏈/流利不與線工作休息

@Model.ListOfStuff.Where(x=>x.StuffProp == "Some Stuff").FirstOrDefault().SomeOtherProp 

但是讓我們說,其實很長,因爲它是建立一個幫手複雜的網格。如果它在一條生產線上都能正常工作,但是當它位於多條生產線上時,它會分開。我怎樣才能解決這個問題?

@Model.ListOfStuff.Where(x=>x.StuffProp == "Some Stuff") 
.FirstOrDefault().SomeOtherProp 

回答

8

在一間鑑於這種語法只是錯誤,我想強調,就可以了。過濾和獲取數據不是視圖的責任。其職責是顯示控制器提供的數據。所以我強烈建議您使用視圖模型,並執行所有這些選擇和東西控制器,使視圖中的所有你必須寫的是:

@Model.SomeStuff 

正如你所看到的你不再需要擔心視圖中的任何行都會中斷。

但是,爲了回答你的問題的醜陋可以包裹在括號:

@(Model.ListOfStuff.Where(x => x.StuffProp == "Some Stuff") 
.FirstOrDefault().SomeOtherProp) 
+1

嚴,這是一個壞榜樣真的,它不是我們在做什麼。它是一個流暢的界面,用於構建網格,以及它所關注的所有視圖。你的括號很好,謝謝! – CrazyDart 2011-05-13 21:44:48

+0

用它來組成MvcContrib Grid尋呼機...很好。 – 2012-06-15 21:54:33

+0

那麼像UI助手這樣的東西流利的語法呢?例如:使用Telerik的網格你會得到'Html.Telerik()。Grid(Model.Orders) .Name(「OrdersGrid」) .Columns(columns => { columns.Bound(o => o.OrderId ); columns.Bound(o => o.ShipAddress); columns.Bound(o => o.RequiredDate); }) .Pageable() .Sortable();' - 我看不到這是*錯誤*在視圖中。 – nathanchere 2014-09-23 12:18:27