gpt4 book ai didi

asp.net-mvc-3 - MVC3 中唯一性的远程验证不适用于可编辑模式

转载 作者:行者123 更新时间:2023-12-04 18:18:10 25 4
gpt4 key购买 nike

我是 MVC3 的新手。我使用 ItemNo 字段作为唯一字段。但该字段可以编辑。如果我使用现有值在 ItemNo 中创建一个值,则远程验证工作正常。如果我在可编辑模式下执行此操作,它会重复与创建操作方法相同的操作。

这是我的验证 Controller :

 <!-- language: lang-js -->
[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
public class ValidationController : Controller
{
ItemControlDBContext db = new ItemControlDBContext();
public JsonResult IsItemNoAvailable(string ItemNo)
{
List<string> ItemNos = (from no in db.Item select no.ItemNo).ToList();
if (ItemNos.Contains(ItemNo.ToLower()))
{
return Json("The ItemNo is already available. Try another.", JsonRequestBehavior.AllowGet);
}
return Json(true, JsonRequestBehavior.AllowGet);
}

}

这是我的模型类
[Required]
[Remote("IsItemNoAvailable", "Validation")]
[Editable(true)]
public string ItemNo { get; set; }

请建议我以何种方式可以在可编辑模式下实现这一目标。

最佳答案

你应该使用RemoteAttribute.AdditionalFields属性(property),并通过 Id您的模型进行验证。在实际操作中,您不仅应该检查 db 是否有 ItemNo。 , 但对于 Id也。

[Required]
[Remote("IsItemNoAvailable", "Validation", AdditionalFields = "Id")]
[Editable(true)]
public string ItemNo { get; set; }

和 Controller 方法(请注意,我还重新考虑了您的选择)
[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);
}

}

关于asp.net-mvc-3 - MVC3 中唯一性的远程验证不适用于可编辑模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11306350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com