使用MVC3 html助手打破验证消息

时间:2011-04-20 16:10:22

标签: jquery asp.net-mvc-3 knockout.js

    private static IDictionary<string, object> CreateBindAttribute<TModel, TProperty>(Expression<Func<TModel, TProperty>> expression)
            {
                string exp = ExpressionHelper.GetExpressionText(expression);
                var htmlAttributes = new Dictionary<string, object>();

                // knockout uses data-bind to bind the UI to the viewModels
                htmlAttributes.Add("data-bind", "value: " + exp + ", uniqueName: true");

                return htmlAttributes;
            }

public static MvcHtmlString KoPasswordFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
        {
            //return htmlHelper.PasswordFor(expression, CreateBindAttribute(expression));
            return htmlHelper.PasswordFor(expression,);
        }

以上代码突出了我的问题。 我有一个knockoutJS html帮助器,它将'data-bind'属性添加到标记中。但是,我发现该字段上的验证消息不起作用。

如果我评论渲染bind属性的重载,那么验证消息就会显示出来。请注意,验证仍然适用于注释掉的行,但下面的验证文本不会显示。

任何人都可以确认此行为,如果有,如何解决?

2 个答案:

答案 0 :(得分:2)

在你的CSS中添加“white-space:pre-word!important”或用“”包装你的Html.ValidationMessageFor() 在您的验证器消息中使用“\ n”来中断消息

答案 1 :(得分:0)

这是一个猜测,但我认为唯一名称是问题。当您启用不显眼的验证时,默认情况下,Html助手会渲染uniqueId / Names。如果不引人注意的验证与之绑定,然后敲除的uniqueName正在更改名称,则会破坏验证。

删除唯一名称,看看它是否有效。