2011-06-28 39 views
7

我是MVC 3,剃鬚刀視圖引擎的新手。 我想根據我的viewmodel中的值設置運行時文本框的可見性。在MVC3 Razor視圖引擎中設置文本框的可見性

但下面的代碼不起作用。

<td> 
    @Html.TextBox("CompanyName", "", new { visible = "false" }) 
</td> 

一旦上面的代碼開始工作,我可以將@Model.EnableCompanyName代替硬編碼的「false」。

所以請幫助我糾正上述代碼。

回答

14

這將根據您的布爾Model.EnableCompanyName :)

希望它可以幫助改變顯示的類型!

@{ 
String displayMode = (Model.EnableCompanyName) ? "inline" : "none"; 
@Html.TextBox("CompanyName", "", new { style = "display:" + displayMode + ";" }) 
} 
+0

Thx Chris。只需在第一次分配中將none替換爲false,並按預期工作即可。 – Biki

+0

Woops!學校男孩錯誤大聲笑。更新的答案反映了這一點。 :) – Chris

2

(編者)

@Html.TextBox("CompanyName", "", new { style = Model.EnableCompanyName ? "display:inline" : "display:none" })

+0

嗨,即使是硬編碼假不工作。例如:@ Html.TextBox(「CompanyName」,「」,new {visible =「false」})不起作用。 – Biki

+0

所以,您需要傳遞:new {style =「display:none」} –

+1

下次嘗試更精確地指定您想要的內容。如果你不知道如何隱藏DOM元素,這是另一個問題。我只是誤解了你。 –

9

這是無關的剃鬚刀這樣。 visible不是input元素的有效屬性(這是Html.TextBox將生成的內容)。您需要

@Html.TextBox("CompanyName", "", new { style = "display:none;" }) 

這裏看到這個例子:

http://jsfiddle.net/QxSpU/

0

添加@ Html.TextBox( 「公司名稱」, 「」,新的{形式= Model.EnableCompanyName? 「可見性:可見」: 「visibility:hidden的」})