web-dev-qa-db-ja.com

@ Html.EditorForを無効にする方法

私は私のasp.net mvc webアプリケーション内に次のものを持っています:

<div><span class="f">Data Center Name</span> @Html.EditorFor(model => model.Switch.TMSRack.DataCenter.Name, new  { disabled = "disabled" })</div>

しかし、フィールドは無効になりません、誰でもお願いできますか?サンクス

31
john Gu

@Html.EditorFor()には、htmlAttributesをサポートするオーバーロードがありません。 @Html.TextBoxFor()を試すことができます

@Html.TextBoxFor(model => model.propertyName, new {disabled= "disabled" })

HtmlAttributesでclassなどのシステムキーワードを使用している場合は、@属性名の前。

例:

@Html.TextBoxFor(model => model.propertyName, new {@class = "disabledClass" })
57
Kaf

MVC 5を使用すると、@Html.EditorFor()はhtmlAttributesをサポートします

@Html.EditorFor(model => model.x, new { htmlAttributes = new { @class = "form-control", @disabled = "disabled" } })

上記の例は、クラスとdisabled属性を追加する方法を示しています

26
SaadK

別の代替方法:EditorForをdivまたは特定のIDのスパンで囲み、jquery/jsを少し使用します。

  <span id="editors">      
        @Html.EditorFor(x => x.ViewModelProperty)
  </span>

    <!-- Disable above editors. EditorFor doesn't allow html attributes unfortunately. -->
    <script type="text/javascript">
        $(function () { $('#editors :input').attr("disabled", true); });
    </script>
8
Sava B.

EditorFor()を使用することもできます。例:

@Html.EditorFor(model => model.Nama, new { htmlAttributes = new { @disabled ="true", @class = "form-control" } })
2

編集変更を受け入れたときに情報が失われた場合...試すことができます

<h3>@Model.x</h3>
@Html.HiddenFor(model => model.x, new { htmlAttributes = new { @class = "form-control" } })
1