【发布时间】:2016-11-07 21:12:31
【问题描述】:
我的视图由 2 个部分视图加上页面中已有的内容组成。我希望每个视图都有一个验证摘要。一切正常,除了其中一个部分出现错误时,该消息会显示在每个验证摘要中,因此它在页面中出现 3 次。我想解决这个问题。
我在网上看了一点,发现有一种方法可以这样做:
var SecurityQuestionsErrors = ViewData.ModelState.Where(ms => ms.Key == "SecurityQuestions");
if (SecurityQuestionsErrors.Count()>0)
{
@Html.ValidationSummary("", new { @class = "" })
}
所以我会在每个部分视图中都有这段代码,以查看错误是否特别针对这个。
当错误来自控制器时(我可以自己添加一个密钥,它工作正常):
catch (FaultException<IncorrectQuestionFault>)
{
// question is incorect
ModelState.AddModelError("SecurityQuestions", Resources.errors.incorrectQuestion);
}
但是当错误来自 ViewModel 时,它没有添加密钥并且我搞砸了......
[Required(ErrorMessageResourceName = "IsRequired", ErrorMessageResourceType = typeof(Resources.errors))]
[StringLength(40, MinimumLength = 7, ErrorMessageResourceName = "NotLongEnough", ErrorMessageResourceType = typeof(Resources.errors))]
[Display(Order = 0, Name = "question", ResourceType = typeof(Resources.errors))]
public string question{ get; set; }
所以我的问题是:我这样做是好方法吗?有没有办法为来自 ViewModel 的错误添加密钥?我应该以其他方式执行此操作吗?
感谢所有帮助:D
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-4 partial-views asp.net-mvc-viewmodel validationsummary