根据远程验证 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);
}
它适用于创建视图,但是当转到编辑时会出现一些问题,就像在编辑页面上提交单击它将再次验证名称并将阻止页面提交,因为数据库中已经有相同的条目(这是我当前的活动项目本身)。我怎么解决这个问题?
Note:I 无法从编辑页面删除验证,因为用户有可能输入任何其他现有名称而不是当前名称。
您需要使用 RemoteAttribute
的 AdditionalFields
并使用 table 的 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);
}
我有一个场景,我不想让重复的条目进入数据库,为此我使用远程验证 属性。 内部模型
[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);
}
它适用于创建视图,但是当转到编辑时会出现一些问题,就像在编辑页面上提交单击它将再次验证名称并将阻止页面提交,因为数据库中已经有相同的条目(这是我当前的活动项目本身)。我怎么解决这个问题? Note:I 无法从编辑页面删除验证,因为用户有可能输入任何其他现有名称而不是当前名称。
您需要使用 RemoteAttribute
的 AdditionalFields
并使用 table 的 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);
}