我对MVC网络应用程序进行了远程验证,并希望稍微扩展一下,并想知道这是否可行。
目前我的模型中有此验证行
[Required(AllowEmptyStrings = false, ErrorMessage = "Please enter a Forename")]
[Remote("doesUserNameExist", "Treeview", HttpMethod = "POST", ErrorMessage = "Already exists")]
public string Username { get; set; }
我的理解是远程验证会将用户输入作为表单数据发送,其名称与属性相同。所以,在这种情况下,它是Forename
控制器类需要一个Forename变量来选择它,例如:
[HttpPost]
public JsonResult doesUserNameExist(string Forename)
{
IEnumerable<SelectListItem> user = new List<SelectListItem>();
using (EIPInternalEntities ctx = new EIPInternalEntities())
{
user = new SelectList(ctx.Database.SqlQuery<string>("EXEC dbo.uspGetLkUpJobTitle").ToList());
}
return Json(!user.Any(x => x.Text.ToUpper() == Forename.ToUpper()));
}
然而,我想要的是一个类,我可以动态地将变量设置为值,而不知道正在发送的属性名称,然后评估和捕获属性名称。
然后我会将属性名称传递给存储过程,该存储过程将查询视图以返回正确的列,并将动态值与之进行比较。
这样就可以避免为应用程序中所需的远程检查的每个实例复制此代码。
那么,有没有办法动态捕获值?
某种
var PropName = Metadata.ContainerType.GetProperty(this.Metadata.PropertyName);
抱歉,如果这有点乱,对此非常新。