MVC 远程属性问题
MVC Remote Attribute Issue
我在 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。
检查 RemoteAttribute
的 AdditionalFields
参数。正如您所描述的,这将允许您提供可用于验证编辑(相对于创建)的另一个字段值(例如实体 ID)。
我在 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。
检查 RemoteAttribute
的 AdditionalFields
参数。正如您所描述的,这将允许您提供可用于验证编辑(相对于创建)的另一个字段值(例如实体 ID)。