我做了一个模型状态的扩展,这使得它可以很方便:
public static class ModelStateDictionaryExtensions
{
/// <summary>
/// Returns true when a model state validation error is found for the property provided
/// </summary>
/// <typeparam name="TModel">Model type to search</typeparam>
/// <typeparam name="TProp">Property type searching</typeparam>
/// <param name="expression">Property to search for</param>
/// <returns></returns>
public static bool HasErrorForProperty<TModel, TProp>(this System.Web.Mvc.ModelStateDictionary modelState,
Expression<Func<TModel, TProp>> expression)
{
var memberExpression = expression.Body as MemberExpression;
for (int i = 0; i < modelState.Keys.Count; i++)
{
if (modelState.Keys.ElementAt(i).Equals(memberExpression.Member.Name))
{
return modelState.Values.ElementAt(i).Errors.Count > 0;
}
}
return false;
}
}
使用上面的方法,你只需输入:
if (ModelState.HasErrorForProperty<GiftViewModel, LoginModel >(e => e.login))
来源
2016-02-04 09:33:33
Ian
为什么你需要吗?你会允许主视图模型的其他属性的无效值? –
是的确切的说,我只想在其余的之前验证这个“步骤”。 – Cactus
没有办法做到这一点。整个模型立即被验证。 –