2014-07-10 99 views
0

列我試圖添加一個新的列到.Net MVC WebGrid,其中包括一個複選框,如果滿足特定的條件,並且不存在,如果條件爲false。MVC 4 WebGrid複選框在條件

下面的代碼工作正確地顯示X或Y(佔位符):

 grid.Column("ID", header: "", 
      style: "labelcolumn", 
      format: (item) => item.ID != null ? "X" : "Y"), 

我似乎無法得到正確的語法,包括複選框,而不是X.

 grid.Column("ID", header: "", 
      style: "labelcolumn", 
      format: (item) => item.ID != null ? @<text><input class="check-box" id="cbSelectedBranch" name="cbSelectedBranch" type="checkbox" value="@item.ID" /></text> : "Y"), 

在這第二個片段中,「(item)」變量會導致此錯誤:

CS0136: A local variable named 'item' cannot be declared in this scope because it would give a different meaning to 'item', which is already used in a 'parent or current' scope to denote something else

使用if n時添加@你的條件似乎會導致項目拋出這個錯誤。下面的代碼,沒有條件,正常工作:

 grid.Column(header: "", 
      style: "labelcolumn", 
      format: @<text><input class="check-box" id="cbSelectedBranch" name="cbSelectedBranch" type="checkbox" value="@item.ID" /></text>), 

任何想法如何使這項工作與條件和複選框輸入?

回答

1

嘗試這樣的:

format: (item) => item.ID != null ? Html.Raw("<input class='check-box' id='cbSelectedBranch' name='cbSelectedBranch' type='checkbox' value='@item.ID' />") : "Y") 
+0

謝謝,但不正確的工作之一。它確實解決了名爲'item'的局部變量無法聲明的問題「,但是當它碰到冒號的@符號時,它會拋出一個錯誤」Expression Expected「。 – Kris

+0

第二次更新不會引發任何錯誤,但會將複選框顯示爲文本文本而不是複選框,即它顯示如下: Kris

+0

將它包裝在Html.Raw中,並檢查 –