MVC远程属性问题

时间:2015-08-21 20:33:13

标签: asp.net-mvc validation asp.net-mvc-4 remote-validation

我在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。

1 个答案:

答案 0 :(得分:1)

查看RemoteAttribute的{​​{3}}参数。如您所述,这将允许您提供可用于验证编辑的另一个字段值(例如实体ID)(与创建相对)。