2

MVC で値が表示されている場合にのみ、テキスト ボックスを読み取り専用に設定したいと考えています。

だから私は書く

 <tr>
 @if (model.first_name != "" ) { 
   <td >
                @Html.LabelFor(model => model.first_name):
            </td>
            <td >
                @Html.TextBoxFor(model => model.first_name)
                <span class="required">*</span>
                @Html.ValidationMessageFor(model => model.first_name)
            </td>
@ else  
  <td >
  @Html.LabelFor(model => model.first_name):
            </td>
            <td >
                @Html.EditorFor(model => model.first_name)
                <span class="required">*</span>
                @Html.ValidationMessageFor(model => model.first_name)
            </td>
@}

            <td >
                @Html.LabelFor(model => model.first_name):
            </td>
            <td >
                @Html.EditorFor(model => model.first_name)
                <span class="required">*</span>
                @Html.ValidationMessageFor(model => model.first_name)
            </td>
        </tr>

しかし、動作していません..それをsloveする方法?? どうすればできますか??

4

3 に答える 3

3

readonly="readonly"代わりにフィールドを作成できdisabled="disabled"ます読み取り専用フィールドの値は、ユーザーが編集できないままサーバーに送信されます。

于 2012-11-06T02:11:28.160 に答える
3

次のようにビューモデルを変更できます

public class MyViewModel
{
  public string first_name { get; set; }

  public object first_name_attributes
  {
    get
    {
      return string.IsNullOrEmpty(first_name) ? null : new { @readonly = "readonly" };
    }
  }
}

UI で、オブジェクトを宣言的に追加できます。

Html.TextBoxFor(x => x.first_name, first_name_attributes)

これにより、UI がはるかにシンプルになり、ビュー モデルには単体テストが可能になるという利点があります。

于 2012-11-06T02:14:28.890 に答える
1

かみそりで if ステートメントを作成し、無効にする入力/エディターで disabled = "disabled" を設定します。

@if
(model.first_name != null)
{

   <td >
            @Html.LabelFor(model => model.first_name):
        </td>
        <td >
            @Html.TextBoxFor(model => model.first_name)
            <span class="required">*</span>
            @Html.ValidationMessageFor(model => model.first_name)
        </td>
}
else
{
  <td >
  @Html.LabelFor(model => model.first_name):
        </td>
        <td >
            @Html.EditorFor(model => model.first_name, new { disabled = "disabled", @readonly = "readonly" }))
            <span class="required">*</span>
            @Html.ValidationMessageFor(model => model.first_name)
        </td>

        <td >
            @Html.LabelFor(model => model.first_name):
        </td>
        <td >
            @Html.EditorFor(model => model.first_name)
            <span class="required">*</span>
            @Html.ValidationMessageFor(model => model.first_name)
        </td>
    </tr>

}

于 2012-11-06T01:57:51.287 に答える