我在MVC中设置了一个远程验证器,以确保在我的页面上创建或编辑公司时公司尚不存在。这是模型:
public class AdminCompany
{
public int CompanyId { get; set; }
[Display(Name = "Company Name")]
[Required(ErrorMessage = "Company Name is required")]
[Remote("DoesCompanyExist", "Ajax", HttpMethod = "POST", ErrorMessage="This company already exists.")]
public string CompanyName { get; set; }
public string PortalsString { get; set; }
}
这是DoesCompanyExist
函数:
[HttpPost]
[AjaxOnly]
public JsonResult DoesCompanyExist(string CompanyName)
{
var companies = new Companys();
companies.GetBySqlStatement("SELECT CompanyName FROM Company WHERE CompanyName='{0}'", CompanyName);
return Json(companies.Count == 0);
}
除了一个问题,一切正常。在我的编辑页面上,如果用户进入公司的编辑页面,然后只保存而不更改任何内容,我的远程验证器会触发验证错误。原因是因为该公司实际上已经存在于数据库中,但是,我的远程验证器没有意识到它的相同记录被修改。
这有什么工作吗?理想情况下,如果我能以某种方式将CompanyId传递给我的远程验证器,那将是很好的。这样我就可以从我的SELECT
声明中排除该ID。
答案 0 :(得分:1)
查看RemoteAttribute
的{{3}}参数。如您所述,这将允许您提供可用于验证编辑的另一个字段值(例如实体ID)(与创建相对)。