2009-07-20 2 views
20

ビュー内のテキストボックスを無効にしたいとします。それらの両方が動作しないasp.net mvcでhtmlヘルパーを使用して読み込み専用のテキストを作成するには?

<%= Html.TextBox("ID", Model.ID, new { readonly="true" })%> 

または

<%= Html.TextBox("ID", Model.ID, new { enable="false" })%> 

:だから私は、次のコードを使用します。解決策は何ですか?

+0

おそらく読み込み専用であれば、DIVにテキストを出力できますか? – Philippe

+0

オーバーロードされたメソッドを使用することに加えて、おそらくdisabled = "disabled" - http://www.w3schools.com/tags/att_input_disabled.asp – blu

+0

> [ここにはnがあります。 MVCでの読み取り専用テキストボックスの作成方法](http://www.codeshower.blogspot.in/2012/09/mvc-how-to-create-readonly-textbox-in.html) –

答えて

45

は、私はあなたが4つのパラメータでオーバーロードを使用する必要がわからない

<%= Html.TextBox("ID", Model.ID, new { @readonly="readonly" })%> 

を試してみてください。あなたは3を持つものを使うことができるはずですが、readonlyはC#のキーワードなので、@を読み取り専用に追加する必要があります。また、@ readonlyをreadonlyに設定するのはXHTMLに準拠しています。

6

あなたがthe documentationを確認した場合、あなたはおそらく期待通り三番目のパラメータは、htmlAttributesではないことがわかります代わりに

<%= Html.TextBox("ID", Model.ID, new { @readonly="true" })%> 

<%= Html.TextBox("ID", Model.ID, null, new { @readonly="true" })%> 

を試してみてください。

overload with four parametersを使用する必要があります。

+1

これは変更されたようです3番目のパラメータ* IS * htmlAttributesです。 – mattruma

2

またはこの:

<%= Html.TextBox("ID", Model.ID, new { @disabled="true" })%> 
5

disabledのTextBoxは、HTMLフォームで提出されることはありません覚えておいて、しかしreadonlyのTextBoxになります。

MVC3 documentationは、上記で使用されたHtml.TextBox(文字列名、オブジェクト値、オブジェクトhtmlAttributes)としての署名を示します。

5

ウェブページに読み取り専用テキストボックスを表示しない場合は、@Html.DisplayForヘルパーを使用することを検討してください。出力は読み取り専用になります(実際にはdiv内の単なるテキストになります)。エンジンは送信時にバインドをモデル化します。

Webフォームエンジン:

<%= Html.TextBoxFor(m => m.ID, new { @readonly = "readonly" }) %> 

カミソリエンジン:

@Html.TextBoxFor(m => m.ID, new { @readonly = "readonly" }) 

乾杯より最新のAPIまで使用できるの利点を生かし

+0

MVC 5では、なぜエンジンがエンジンのバインディングをモデル化するときにモデルの一部になるのかわかりません。*、MVC 5では動作しません。例えば、 'int'では、常に「0」。この - > '@Html.TextBoxFor(m => m.ID、new {@readonly =" readonly "})'を使用すると、期待どおりに動作します。私はここで問題ではないことを確認できないので、私はDownVoteをしなかった。 –

5

+0

エンジンのフォーマットを指摘してくれてありがとう – Twocode

関連する問題