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);
}

1 つの問題を除いて、すべてが正常に機能しています。私の編集ページで、ユーザーが会社の編集ページに移動し、何も変更せずに保存すると、リモート バリデーターが検証エラーをトリガーします。その理由は、会社が実際にはデータベースに既に存在するためですが、私のリモートバリデーターは、同じレコードが変更されていることを認識していません。

これに対する何らかの回避策はありますか?理想的には、何らかの方法で CompanyId をリモート バリデーターに渡すことができればよいでしょう。そうすれば、その ID をSELECTステートメントから除外できます。

4

1 に答える 1

1

AdditionalFieldsのパラメータをチェックアウトしますRemoteAttribute。これにより、説明したように、(作成ではなく) 編集の検証に使用できる別のフィールド値 (エンティティ ID など) を指定できるようになります。

于 2015-08-21T20:37:37.897 に答える