获取viewmodel属性的modelstate键
本文关键字:modelstate 属性 viewmodel 获取 | 更新日期: 2023-09-27 17:53:25
我有一个添加产品表单,这取决于用户之前添加的类别,产品类型等。我希望在表单首次加载时显示一个错误,而不是让他们完成表单,然后意识到他们无法提交。
我想将此错误添加到针对适当属性的modelstate中-因此我的问题是如何获得该属性的modelstate键名?
Model.Step1.PopulateData(_productTypeSvc.GetList(), _websiteSvc.GetMaximumNumberOfProductImages(HttpContext.Request.Url.Host));
Model.Title = "Add A Product - Step 1: The Basics";
if (Model.Step1.ProductTypes.IsNullOrEmpty())
{
//Rather than string.Empty, I want to programmatically get the correct key to add the error to..
//E.g. if it were the view - HtmlHelper.NameFor(m => m.Step1.ProductTypeID)
ModelState.AddModelError(string.Empty, "Please add at least one product type before adding products.");
}
我知道我可以模拟HtmlHelper对象,但我宁愿避免这种情况,想知道是否有更好的方法?
在MVC中找到合适的扩展:
System.Web.Mvc.ExpressionHelper.GetExpressionText(LambdaExpression expression);
MSDN。
谢谢大家。
更新:public static string GetPropertyName<TModel, TValue>(this TModel model, Expression<Func<TModel, TValue>> propertySelector)
{
return ExpressionHelper.GetExpressionText(propertySelector);
}
然后使用扩展名:
ModelState.AddModelError(Model.GetPropertyName(m => m.Step1.ProductTypeID), "Please add at least one product type before adding products.");