我实现了由Brad在本帖中描述的本帖技术,但是我更改了他的EditorTemplate/ template.master的第31行:
<%= Html.ValidationMessage("", "*") %>至:
<%= Html.ValidationMessage(ViewData.ModelMetadata.PropertyName)%>这样,实际的验证文本将显示在控件旁边。,这使不显示任何内容。如果我将同一行移动到object.ascx文件中,它会呈现,尽管不在布局的正确位置。有元数据生命周期的东西在这个时候没有填充吗?
更新
我在我的object.ascx中有这个,它可以工作。
<%= Html.Editor(prop.PropertyName)%>
<p>
<%=Html.ValidationMessage(prop.PropertyName)%>
</p>UPDATE2
这在模板中是可行的:
<%= Html.ValidationMessage("")%>我认为模板的作用域在控制级别,而不是视图模型级别,因此“让”只使用整个控件模型,而不是从视图模型中搜索属性。
发布于 2010-07-26 12:32:23
这在模板中是可行的:
<%= Html.ValidationMessage("")%> 我认为模板的作用域在控制级别,而不是视图模型级别,因此“让”只使用整个控件模型,而不是从视图模型中搜索属性。
发布于 2010-07-20 13:38:54
您的模型状态中一定缺少了什么,或者您已经将密钥从属性名更改为属性名。
ValidationMessage的丰富代码(任何内容)都非常简单:
private static MvcHtmlString ValidationMessageHelper(this HtmlHelper htmlHelper, ModelMetadata modelMetadata, string expression, string validationMessage, IDictionary<string, object> htmlAttributes) {
string modelName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(expression);
FormContext formContext = htmlHelper.ViewContext.GetFormContextForClientValidation();
if (!htmlHelper.ViewData.ModelState.ContainsKey(modelName) && formContext == null) {
return null;
}
ModelState modelState = htmlHelper.ViewData.ModelState[modelName];
ModelErrorCollection modelErrors = (modelState == null) ? null : modelState.Errors;
ModelError modelError = ((modelErrors == null) || (modelErrors.Count == 0)) ? null : modelErrors[0];
if (modelError == null && formContext == null) {
return null;
}唯一的其他问题是,如果您以某种方式清除了您的validationMessage。
https://stackoverflow.com/questions/3290336
复制相似问题