我有一個Html.TextBox(),我需要在某些條件下禁用它。使TextArea它是這樣的:asp.net MVC:禁用文本框
<%=primaryLang ? Html.TextArea("e.location", new { rows = 2, cols = 60 }) : Html.TextArea("e.location", new { rows = 2, cols = 60, disabled = "true" })%>
但隨着文本框是不可能的:
<%=primaryLang ?
Html.TextBox("e.startDate") :
Html.TextBox("e.startDate", new { disabled = "true"})%>
它將在價值問題{禁用=真}。這是因爲唯一允許你傳遞HtmlAttributes的函數也需要傳遞模型。這種觀點是強類型,並對模型進行自動填充
如果我通過這樣的:。
Html.TextBox("e.startDate", Model.e.startDate, new { disabled = "true"})
或像這樣:
Html.TextBox("e.startDate", null, new { disabled = "true"})
GET版本的工作,但POST版本將發佈NullReferenceException。上述兩者似乎具有完全相同的效果。兩者都將在GET上呈現來自模型的正確數據。
如果我離開它的慾望是這樣的:
Html.TextBox("e.startDate")
它會正常工作,對於POST和GET ...
爲什麼?任何方式來完成?
謝謝! :)
多虧了下面的答案,我解決了這個問題是這樣的:
<%=primaryLang ?
Html.TextBox("e.startDate") :
Html.Hidden("e.startDate") + Html.TextBox("e.startDate", null, new { disabled = "true"})%>
就是這樣,太棒了!我解決了它,並用我的解決方法編輯了問題(在此處粘貼失去所有縮進並且無法讀取)。 – Palantir 2009-09-15 10:42:28