1

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

4

1 回答 1

1

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

于 2015-08-21T20:37:37.897 回答