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属性的重载,那么验证消息就会显示出来。请注意,验证仍然适用于注释掉的行,但下面的验证文本不会显示。
任何人都可以确认此行为,如果有,如何解决?
答案 0 :(得分:2)
在你的CSS中添加“white-space:pre-word!important”或用“”包装你的Html.ValidationMessageFor() 在您的验证器消息中使用“\ n”来中断消息
答案 1 :(得分:0)
这是一个猜测,但我认为唯一名称是问题。当您启用不显眼的验证时,默认情况下,Html助手会渲染uniqueId / Names。如果不引人注意的验证与之绑定,然后敲除的uniqueName正在更改名称,则会破坏验证。
删除唯一名称,看看它是否有效。