繁体   English   中英

根据远程验证MVC检查当前项目ID

[英]Check current Item Id against remote validation MVC

我有一种情况,我不想允许重复的条目进入数据库,为此,我使用了“远程验证”属性。 内部模型

  [Remote("DepartmentNameExists", "Department", "Department Name is already taken.")]
    public string Name { get; set; }

内部控制器

  public JsonResult DepartmentNameExists(string name)
    {
        var user = db.Departments.Where(x => x.Name == name.Trim());

        return !user.Any() ?
          Json(true, JsonRequestBehavior.AllowGet) :
          Json(string.Format("{0} is allready exists.", name),
              JsonRequestBehavior.AllowGet);


    }

它适用于创建视图,但是当进入“编辑”时会出现一些问题,例如在“编辑”页面上提交时,单击它将再次验证名称,并且将阻止页面提交,因为数据库中已有相同的条目(这是我当前的活动项目本身) )。 我怎么解决这个问题? 注意:我无法从编辑页面中删除验证,因为用户可能会输入其他任何现有名称,而不是当前名称。

您需要使用AdditionalFieldsRemoteAttribute和使用Id该表(主键)。

[Remote("DepartmentNameExists", "Department", "Department Name is already taken.", AdditionalFields = "Id")]
public string Name { get; set; }

在控制器中,检查“名称”是否存在,但您当前正在编辑的名称除外。

public JsonResult DepartmentNameExists(string name, int id = 0)
{
    return db.Departments.Any(x => x.Name == name.Trim() && x.Id != id) 
              ? Json(string.Format("{0} already exists.", name), 
                                        JsonRequestBehavior.AllowGet)
              : Json(true, JsonRequestBehavior.AllowGet);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM