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 ,但同时避免空异常?

我知道我可以将 objectID 传递给 Edit 操作方法,但这会阻止 DbUpdateConcurrencyException 被触发。所以我必须将 Group 对象传递给编辑操作方法,就像我在上面的代码中所做的那样。

4

0 回答 0