Mam Html.TextBox() i muszę go wyłączyć w pewnych warunkach. Z TextArea to idzie tak:asp.net MVC: wyłącza TextBox
<%=primaryLang ? Html.TextArea("e.location", new { rows = 2, cols = 60 }) : Html.TextArea("e.location", new { rows = 2, cols = 60, disabled = "true" })%>
Ale z TextBox nie jest możliwe:
<%=primaryLang ?
Html.TextBox("e.startDate") :
Html.TextBox("e.startDate", new { disabled = "true"})%>
będzie wydać {disabled = true} wartości. Jest tak dlatego, że jedyną funkcją, która pozwoli ci przekazać HtmlAttributes będzie również wymagać przekazania modelu. Pogląd ten jest silnie wpisane, a model jest automatycznie wypełniane
Gdybym przekazać go tak:.
Html.TextBox("e.startDate", Model.e.startDate, new { disabled = "true"})
lub tak:
Html.TextBox("e.startDate", null, new { disabled = "true"})
wersja GET będzie działać, ale wersja POST wyda wyjątek NullReferenceException. Oba powyższe wydają się mieć dokładnie taki sam efekt. Obie przedstawią poprawne dane z modelu w GET.
Jeśli zostawię go pożąda tak:
Html.TextBox("e.startDate")
będzie działać poprawnie, zarówno POST i GET ...
Dlaczego? Jakieś sposoby osiągnięcia?
Dzięki! :)
Dzięki odpowiedzi poniżej Rozwiązałem to tak:
<%=primaryLang ?
Html.TextBox("e.startDate") :
Html.Hidden("e.startDate") + Html.TextBox("e.startDate", null, new { disabled = "true"})%>
To wszystko, świetnie! Rozwiązałem go i zredagowałem pytanie za pomocą mojego obejścia (wklejenie go tutaj traci wszystkie wcięcia i jest nieczytelne). – Palantir