从控制器的模型访问验证消息

时间:2011-10-27 18:00:21

标签: asp.net-mvc-3 validation model

如何通过控制器上的ModelState变量访问模型的验证消息?

2 个答案:

答案 0 :(得分:1)

string message = ModelState["SomeProperty"].Errors[0].ErrorMessage;

当然必须进行检查,因为每个访问器都可以返回null。但是,如果您完全确定SomeProperty在模型状态中至少有一条错误消息,那就没问题。

这些检查当然可以封装在扩展方法中,这样在控制器中就可以简单地:

string message = ModelState.GetFirstErrorMessageFor("SomeProperty");

就像这样:

public static class ModelStateExtensions
{
    public static string GetFirstErrorMessageFor(this ModelStateDictionary modelState, string property)
    {
        ModelState value;
        if (!modelState.TryGetValue(property, out value))
        {
            return string.Empty;
        }
        return (value.Errors.FirstOrDefault() ?? new ModelError("")).ErrorMessage;
    }
}

答案 1 :(得分:0)

检查ModelState["PropertyName"].Errors集合。