1

現在、MVC 3 で EF を使用してデータベースを参照するアプリケーションを作成しています。スキャフォールディングの読み取り/書き込みデータを使用しており、すべてのフィールドではなく、データベース エントリに対して一部の編集を実行できるようにしたいと考えています。ユーザーが編集フォームの一部のフィールドを編集できないようにしてデータベースを編集できないようにする方法はありますか?

最初の質問以来、変更して編集機能を制限しようとしました

    <div class="editor-label">
        @Html.LabelFor(model => model.Clause)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Clause)
        @Html.ValidationMessageFor(model => model.Clause)
    </div>

を使用するには

    <div class="editor-label">
        @Html.LabelFor(model => model.Clause)
    </div>
    <div class="editor-field">
        @Html.DisplayFor(model => model.Clause)
    </div>

ただし、実際に編集を保存すると、DisplayFor フィールドを参照するフィールドが空白になります。これが発生しないようにするためのより良い方法はありますか?

どうもありがとう、

クリ3

4

1 に答える 1

1

まあ、それらはかなりの数のソリューションです。

  1. ビューで編集したいフィールドのみを表示できます (安全ではありません。悪意のあるものは、不要なフィールド値をフォームに追加する可能性があります)。

  2. コントローラーで必要なフィールドのみを手動で更新できます。

  3. 編集したいプロパティのみを取得するViewModelを使用できます(そのソリューションを選択することをお勧めします)。

編集 表示された値をフォームに渡したいが、「目に見えて編集できない」ようにしたい場合は、隠しフィールドとして渡す必要があります。

@Html.DisplayFor(model => model.Clause)
@Html.HiddenFor(model => model.Clause)

しかし、それが解決策1です。私の答えでは、おそらく悪い方です。

ちなみに、このフィールドを編集したくない場合は、空白に戻ってもかまいません。エンティティを更新する方法を変更するだけです。

于 2013-05-15T10:34:05.407 に答える