2

我正在使用 EF 6 数据库优先方法开发 MVC 5 应用程序。我的许多模型中的字段都需要进行一定的验证。我正在使用远程验证来验证它们。由于它被用于很多模型中,所以我正在尝试一种通用方法。

为此,我创建了一个名为 IEntity 的接口,其中包括模型中使用的所有属性。然后我为我的验证方法做了以下事情:

[HttpPost]
public JsonResult UniqueCheck<T>(T code) where T : class, IEntity
{
    MyEntities db = new MyEntities();
    if (db.Set<T>().Any(x=>x.S1 == code.S1))
    {
        return Json("Already Exists!");
    }
    else
    {
        return Json(true);
    }
}

以下是我如何调用模型中的属性验证:

[Remote("UniqueCheck", "Rules", HttpMethod = "POST")]

public string S1 { get; set; }

但问题是验证不起作用,当我在浏览器控制台中检查时,我发现验证实际上正在进入该方法,但返回了 500(内部服务器错误)。

我知道问题出在用方法名称编写的T上,因为当我删除泛型并硬编码我的模型名称时,它工作正常。

我只想使用 MVC 的远程验证,我很乐意让这个通用方法正常工作,否则它将是很多位置的复制/粘贴。

4

0 回答 0