0

現在、モデル クラス レベルで、CreatedDate やナビゲーション プロパティ オブジェクトなど、ユーザーが定義してはならない属性をモデル バインダーから除外しました。

したがって、モデル クラス内で次のBINDリストを定義します。これにより、ユーザー (またはハッカーでさえも) が CreatedDate フィールドの値を含めることができなくなり、この値は、オブジェクトの作成時にシステム コード内でのみ設定されます。そのため、次のようにバインドリストに含めませんでした:-

[MetadataType(typeof(Group_validation))]
    [Bind(Include="Description,GroupID,Name")]
    public partial class Group
    {

しかし、問題は、POST Edit アクション メソッド内に、次のコードがあることです:-

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(Group group)
        {

            try
            {
                if (ModelState.IsValid)
                {
                    groupRepository.InsertOrUpdate(group);
                    groupRepository.Save();
                    return RedirectToAction("Index");
                }
            }
catch (DbUpdateConcurrencyException ex)
            {
                var entry = ex.Entries.Single();

                var clientValues = (Group)entry.Entity;

CreateDate フィールドが必要なため、エラーが発生し、モデル バインダーから除外していますか? では、モデル バインダーから CreateDate を除外すると同時に、null 例外を回避するにはどうすればよいでしょうか。

objectID を Edit アクション メソッドに渡すだけでよいことはわかっていますが、これでは DbUpdateConcurrencyException が発生しなくなります。そのため、上記のコードで行っているように、グループ オブジェクトを編集アクション メソッドに渡す必要がありました。

4

0 に答える 0