2012-05-27 31 views
1

我用這個:三元運算符在MVC3的Razor視圖,並檢查屬性

<input type="checkbox" value="@item.Id" checked="@(item.HasAccess ? "checked" : "")"/> 

這工作正常:我的意思是,當HasAccesstrue然後checked="checked"HasAccessfalse然後checked=""但總是checkbox小號檢查,如何使用三元運算符並正確處理checked屬性?

+0

您在哪裏使用此代碼?如果你發佈了更多的視圖,我必須看到更多的上下文有助於解決問題 –

+0

@Chris我實際上只看到了在網格組件或控件中,從來沒有在MVC視圖中有助手可以使用,但確定:-) –

回答

13

不幸的是,在剃刀V1,你必須做這樣說:

<input type="checkbox" value="@item.Id" @(item.HasAccess ? "checked=\"checked\"" : "") /> 

這是因爲在HTML世界中,屬性僅僅出現在所有的,無論這個值的,告訴瀏覽器選中該框。

在Razor V2中,這個問題不會那麼嚴重。請參閱下面的文章的條件屬性部分:

http://vibrantcode.com/blog/2012/4/10/whats-new-in-razor-v2.html/

+1

你的鏈接已經死亡。 – JYL

+0

這是一個很好的選擇(帶有複選框的示例):http://www.davidhayden.me/blog/conditional-attributes-in-razor-view-engine-and-asp.net-mvc-4 – JYL