-1

エントリーに使用されているカミソリディスプレイがあります。ある場合には、ユーザーがテキスト ボックスにデータを入力できるようにしたいのですが、別のケースでは、ユーザーがテキスト ボックスにデータを入力できないようにしたいと考えています。私は次のようなコードを使用しています:

@Html.TextBoxFor(model => model.Goop, new { @class = "text-box", maxlength = 2, onfocus = "javascript:this.select();" })
if (Model.Review.ReviewType.Equals("M"))
{ 
    <script type="text/javascript">
        $(function () {
            $("#Goop").prop("disabled", true);
         });
    </script>
}

jQuery(上記)、CSS属性、javascript、ASP.NETなど、いくつかの方法でこれを実行しようとしましたが、すべて同じ問題があります。フォームが送信されたときに、Goopテキストボックスが無効になっている場合、Goopの値モデルはヌルです。アイデア?前もって感謝します!

4

2 に答える 2

2

jQueryなしではクールではないかもしれませんが、アプリでこれを行うときは、次のようなことを行います

if (Model.Review.ReviewType.Equals("M"))
{ 
    @Html.DisplayFor(model => model.Goop)
    @Html.HiddenFor(model => model.Goop)
}
else
{
    @Html.TextBoxFor(model => model.Goop)
}
于 2012-08-15T19:09:59.260 に答える
1

フォーム要素が無効になっている場合、値は投稿されません。それが機能するはずです。

これを回避するには、次のいずれかを行う必要があります。submit メソッドをインターセプトすることで、投稿する直前にフィールドを有効にすることができます。非表示フィールドを使用して、無効なコントロールに加えてデータを格納できます。または、コントローラー側の値を想定することもできます。

ちなみに、.prop("disabled", "disabled")これは disabled="disabled" としてレンダリングされ、標準に準拠しています。

于 2012-08-15T18:52:38.543 に答える