首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC2 ValidationMessage in template.master不呈现

MVC2 ValidationMessage in template.master不呈现
EN

Stack Overflow用户
提问于 2010-07-20 13:21:09
回答 2查看 363关注 0票数 1

我实现了由Brad在本帖中描述的本帖技术,但是我更改了他的EditorTemplate/ template.master的第31行:

代码语言:javascript
复制
<%= Html.ValidationMessage("", "*") %>

至:

代码语言:javascript
复制
<%= Html.ValidationMessage(ViewData.ModelMetadata.PropertyName)%>

这样,实际的验证文本将显示在控件旁边。,这使不显示任何内容。如果我将同一行移动到object.ascx文件中,它会呈现,尽管不在布局的正确位置。有元数据生命周期的东西在这个时候没有填充吗?

更新

我在我的object.ascx中有这个,它可以工作。

代码语言:javascript
复制
   <%= Html.Editor(prop.PropertyName)%>
   <p>
       <%=Html.ValidationMessage(prop.PropertyName)%>
   </p>

UPDATE2

这在模板中是可行的:

代码语言:javascript
复制
 <%= Html.ValidationMessage("")%>

我认为模板的作用域在控制级别,而不是视图模型级别,因此“让”只使用整个控件模型,而不是从视图模型中搜索属性。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-26 12:32:23

这在模板中是可行的:

代码语言:javascript
复制
 <%= Html.ValidationMessage("")%> 

我认为模板的作用域在控制级别,而不是视图模型级别,因此“让”只使用整个控件模型,而不是从视图模型中搜索属性。

票数 0
EN

Stack Overflow用户

发布于 2010-07-20 13:38:54

您的模型状态中一定缺少了什么,或者您已经将密钥从属性名更改为属性名。

ValidationMessage的丰富代码(任何内容)都非常简单:

代码语言:javascript
复制
 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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3290336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档