Asp.net mvc 如何在ValidationMessageFor中获取原始validationmessages?
我得到了一个asp.net mvc4应用程序,我只想检索validationmessagefor的确切错误字符串,而不是span标记、类等 当前正在从ValidationMessageFor返回以下内容:Asp.net mvc 如何在ValidationMessageFor中获取原始validationmessages?,asp.net-mvc,validation,asp.net-mvc-4,Asp.net Mvc,Validation,Asp.net Mvc 4,我得到了一个asp.net mvc4应用程序,我只想检索validationmessagefor的确切错误字符串,而不是span标记、类等 当前正在从ValidationMessageFor返回以下内容: <span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="Password"> <span class="" for="Password" generated="
<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="Password">
<span class="" for="Password" generated="true">The Password field is required.</span>
</span>
密码字段是必需的。
我只想返回:密码字段是必需的。
这是因为我需要在另一个元素属性中插入确切的值(因此我不能使用HTML标记)
本质上,我需要一个自定义的ValidationMessageforHTML助手,它只返回错误消息本身
如何执行此操作?要访问错误,应使用ModelState.errors属性。它包含 ModelErrorCollection 这是一个 模型误差 参考这里
然后,您可以创建自己的助手,并在客户端访问这些消息。任何错误消息都是您的
ModelState
的一部分
例如,如果您有一个必填字段FirstName,则可以得到如下错误消息:
ModelState["FirstName"].Errors[0].ErrorMessage
string errorMessage = ModelState.For<Person>(p => p.FirstName).Errors[0].ErrorMessage;
在这种情况下,您希望只有一个错误。此属性返回“FirstName字段是必需的”
您可以使用ViewDate.ModelState
从控制器或视图访问ModelState
ModelState
属于ModelStateDictionary
类型,它是一个IDictionary
。它只有一个字符串类型的索引器属性。因此,您无法使用ModelState[p=>p.Property]
访问它。但是,您可以轻松创建一个扩展方法来帮助您:
public static class ModelStateExtension
{
public static ModelState For<TModel>(this ModelStateDictionary dictionary,
Expression<Func<TModel, object>> expression)
{
string propertyName = ExpressionHelper.GetExpressionText(expression);
return dictionary[propertyName];
}
}
公共静态类ModelStateExtension
{
(此ModelStateDictionary字典,
表达式(表达式)
{
字符串propertyName=ExpressionHelper.GetExpressionText(表达式);
返回字典[propertyName];
}
}
您可以这样使用它:
ModelState["FirstName"].Errors[0].ErrorMessage
string errorMessage = ModelState.For<Person>(p => p.FirstName).Errors[0].ErrorMessage;
string errorMessage=ModelState.For(p=>p.FirstName)。错误[0]。errorMessage;
如果需要,您可以让扩展方法直接为第一个错误返回
ErrorMessage
,而不是ModelState。
用于您可以使用的特定属性
ViewData.ModelState["Password"].Errors
你能说得更具体些吗?您想在哪里解析这些消息?在服务器端或客户端。展示你已经尝试过的东西。@DawidDziadkiewicz很抱歉这个错误的解释-我已经更新了我的问题。此外,它必须是客户端的。是否可以在modelstate中使用lambda表达式?与ModelState相同(m=>m.Password)。错误[0]。错误消息?