回答:
readonly="readonly"
代わりにフィールドを作成できませんdisabled="disabled"
か?読み取り専用フィールドの値は、ユーザーが編集できない状態でサーバーに送信されます。SELECT
タグは、しかし例外です。
<%: Html.TextBoxFor(model => model.p1, new { @readonly = "readonly" }) %>
どうすればグレー表示にして、視覚的に編集できないように見えるのでしょうか。LabelForに似たものを使用した方がいいのですが、LabelForを試してみましたが、DisplayNameしか取得できません...
type="checkbox"
入力に対しても機能しません
皆に感謝します:
私がこれを解決した方法:
document.getElementById("Costo").readOnly = true;
document.getElementById("Costo").style.color = "#c0c0c0";
注意:
私は答えでこの情報を得ましたが、私は編集されました。
$("#textBoxId").css("color", "#c0c0c0")
ます。
@ppumkinはこの回答についての彼のコメントでこれについて言及しましたが、障害者からのデータの送信に関する他のリソースを見つけることができなかったので、それを強調したいと思いました<select>
。また、selectは<input>
sではなく「入力」であるため、問題に関連していると思います。
無効になっている選択とそのすべての並べ替えの非表示フィールドを含めるだけです。
例:
@Html.DropDownListFor(model => model.SelectedID, ... , new { disabled = "disabled"}) @* Won't be posted back *@
@Html.HiddenFor(model => model.SelectedID) @* Will be posted back *@
注意:これにより、同じIDを持つ2つのタグがページに配置されます。これは実際には有効なHTMLではなく、JavaScriptで問題を引き起こす可能性があります。私にとっては、ドロップダウンの値をhtml id
で設定するJavaScriptがあり、非表示フィールドを最初に配置すると、JavaScriptはの代わりにそれを見つけますselect
。
通常、「読み取り専用」であるがサーバーに送信する必要があるフィールドがある場合は、表示を無効(または単にテキスト)にしますが、同じ名前の非表示フィールドを追加します。フィールドがサーバー側で実際に変更されていないことを確認する必要があります。アクションのモデルからフィールドを更新しないでください。ただし、エラーがある場合でもモデルの状態は正確です。
フォームが送信される前に、次のようなコードを使用することもできます。
$(":disabled", $('#frmMain')).removeAttr("disabled");
Ajax.BeginForm
か?
設計上、ブラウザはそれをサポートしていません。
それらを作るのいずれかのreadonly
サーバ、またはまだと使用可能なコントロールとしている取引場合は値を提出することができますどのreadonly
ように選択し、追加のCSSスタイルとして属性pointer-events: none;
、それらを非インタラクティブにするために
ハックのようなものですが、動作します!また、JavaScriptを使用せずに送信ボタンで直接フォームを送信する場合にも機能します。追加の作業は必要ありません!
例えば:
<select asp-for="TypeId"
asp-items="@(new SelectList(await TypeRepository.FetchTypesAsync(), "TypeId", "Name"))"
class="form-control form-control-sm"
readonly
style="pointer-events: none;">
</select>
無効になっているがチェックされているチェックボックスを処理していて、値を送信する場合は、非表示フィールドが@ Html.CheckBoxFor非表示フィールドの前に表示されるようにする必要があります。
以下は私が答えを見つけたところからのリンクです。 http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033
Tasosを展開する( ":disabled"、$( '#xxxForm'))。removeAttr( "disabled"); あなたは使うことができます:
$("#xxxForm").submit(function (e) {
e.preventDefault();
var form = this;
$('#Field1')[0].disabled = false;
$('#Field2')[0].disabled = false;
...
$('#FieldN')[0].disabled = false;
form.submit(); // submit bypassing the jQuery bound event
});
これは、ASP.netでモデル値を送信するのに役立ちます。
$("#iD").attr("style", "pointer-events: none;background-color:rgb(220,220,220)");
無効にすると値が失われるため、通常はCheckBoxまたはCheckBoxForにこの方法を使用します。読み取り専用はチェックボックスでも機能しません。
@Html.DisplayFor(m => m.Order.Transfer)
@Html.HiddenFor(m => m.Order.Transfer)
このスクリプトをページの@sectionスクリプトに配置するだけです。これにより、ページを送信するときに入力が有効になります。送信後にユーザーを別のページにリダイレクトする必要があります。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js">
$("form").submit(function () {
if ($('form').valid()) {
$("input").removeAttr("disabled");
}
});
</script>