您應該使用RemoteAttribute.AdditionalFields財產,並通過您的模型的Id
進行驗證。比起在行動中,你應該檢查db不僅是ItemNo
,而且Id
也是。
[Required]
[Remote("IsItemNoAvailable", "Validation", AdditionalFields = "Id")]
[Editable(true)]
public string ItemNo { get; set; }
和控制器的方法(請注意,我也重新分解你的選擇)
[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
public class ValidationController : Controller
{
ItemControlDBContext db = new ItemControlDBContext();
public JsonResult IsItemNoAvailable(string ItemNo, int ID=0)
{
bool itemNoAlreadyExists = db.Item.Any(item => item.ItemNo == itemNo && item.ID != ID);
if (itemNoAlreadyExists)
{
return Json("The ItemNo is already available. Try another ItemNo.", JsonRequestBehavior.AllowGet);
}
return Json(true, JsonRequestBehavior.AllowGet);
}
}
>如果我添加id作爲另一個參數則遠程驗證工作不正常。 – user1495547
@ user1495547添加參數是正確的方法。 id是否正確傳遞?你應該調試問題,並提供更多的細節:) – archil
如果我添加ItemNO和Id作爲2參數,然後編輯動作工作正常。但是,創建操作方法並未調用遠程驗證。即使它根本不調用驗證JSON方法。我認爲創建活動沒有Id。以便創建操作不會調用驗證。 – user1495547