我有一个查询来测试有效的邮政编码条目:
using (_ctx)
{
try
{
var pc = _ctx.tblPostcodes.Where(z => z.Postcode == postcodeOutward)
.Select(x => new { postcodeId = x.PostcodeID }).Single();
pcId = pc.postcodeId;
}
catch (Exception)
{
pcId = 0;
Response.Redirect("./");
}
}
我不喜欢我是怎么做到的。它很笨拙并且没有显示错误(这是我的第一个MVC项目)。
我更确切地说它会针对Postcode文本框返回验证错误。我有各种输入错误的模型注释,但必须检查数据库的邮政编码。
有关如何设置ModelState以获得正确响应的任何建议吗?
答案 0 :(得分:0)
你可以尝试:
if(this.ModelState.ContainsKey("postcodeOutward"))
this.ModelState.Add("postcodeOutward", new ModelState());
ModelState state = this.ModelState["postcodeOutward"];
state.Errors.Add("<error_message>");
state.Value = new ValueProviderResult(postcodeOutward, postcodeOutward == null ? "" : postcodeOutward.ToString(), CultureInfo.CurrentCulture);
您还可以尝试使用自定义验证属性来对数据库执行检查,并自动填充this.ModelState
属性,但我不确定是否在验证中访问数据库属性将是一个好的/推荐的方法。