8

私はMVCを初めて使用し、コードファーストアプローチのモデルクラスを構築したときに、各キーID列に属性[ScaffoldColumn(false)]が設定されていました。これを行ったのは、ビューにIDを明確に表示したくないためです。この問題の回避策は、IDフィールドを含む各ビューのUIによって生成されたHTMLを削除することです。

モデルでsettoを使用して発生した問題はScaffoldColumnfalseビューのEditメソッドが実行されたときに最初に気づき、次のエラーを受け取りました。ストアの更新、挿入、または削除ステートメントが予期しない行数(0)に影響しました。HttpPostデバッグでコードを実行したとき、ビューのEditメソッドに示されているように、IDプロパティは実際にはゼロに設定されていました。

誰かが詳しく説明してくれることを願っている私の質問はScaffoldColumn、この場合は編集のようにIDがコントローラーメソッドに送信されていない場合にMVCのような属性を持つことのポイントは何HttpPostですか?これを昔ながらの方法で行い、この属性がキー/外部キーのプロパティに追加されていないときに生成されたMVCテンプルによって作成された各ビューのHTMLマークアップを削除する必要がありますか?

この属性をに設定した場合の回避false策は、各メソッドにIDパラメータを追加することHttpPostであり、を呼び出す前に適切なIDプロパティフィールドを設定することSaveChanges()でした。

4

3 に答える 3

4

これにデータ注釈を使用して、次の操作を行うことができます。

[HiddenInput(DisplayValue=false)]

このように、フィールドはビューへの非表示の入力を使用して表示されます。変更を加える必要はありません。ビューはそれを表示する方法を認識します。

于 2016-02-14T10:33:27.163 に答える
3

さて、あなたはそれが編集可能なフィールドとして足場を組むことを望まないが、もちろんあなたはあなたが気づいたようにそれを形で望む。解決策は、ビューの非表示フィールドとして手動で追加することです。このようなもの:

@Html.HiddenFor(model => model.id)
于 2012-05-08T05:34:10.187 に答える
3

[ScaffoldColumn(false)]、それは単にプロパティを非表示にします。idの自動インクリメントプロパティがあるとします。ユーザーはこのプロパティとは何の関係もありません。したがって、これを使用して、ビューでプロパティを非表示にします。

于 2018-08-28T17:23:25.837 に答える