easyui 无法使用mvc model绑定提示
救急啊
你加上这两个属性试试required: "true", missingMessage: "必填项",
不是,我需要显示mvc model绑定的验证信息而不是easyui自带提示
@大宝天天见ohyeah: 那你在那里在放一个原来可以验证的输入框,然后隐藏掉,同步easyui_databox 的值
我估计是easyui_databox 和jquery validate冲突了
@刘宏玺: 就是这个问题啊,我不知道怎么解决这个问题
@大宝天天见ohyeah: 我查了资料说的修改easyui对象名称,我对easyui又不熟悉,跟本不知道是哪个对象
@大宝天天见ohyeah: 你就在现在这个easyui_databox 的地方放置一个原来可以验证的输入框
然后隐藏掉,在easyui_databox 数据更新的时候同步更新隐藏掉的输入框,应该就实现了
@刘宏玺: 这样不可行啊,我需要大批量的使用easyui控件
@大宝天天见ohyeah: 那你重写一下easyui_databox ,在使用的时候自动做这些事情嘛
@刘宏玺: 有没有办法直接解决这种冲突啊。
@大宝天天见ohyeah: 这个就要看具体冲突是什么了,你使用easyui_databox 的时候,那个地方会自动生成一个<input type="hidden" class="textbox-value" name="" value="">,你想办法把之前的验证绑定在这个上面就能实现了
或者你使用my97应该不会有冲突
////////////////////
//Easyui控件Mvc扩展
//版本v1
//创建日期2013-09-28
////////////////////
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
namespace System.Web.Mvc.Html
{
/// <summary>
/// EasyUi控件
/// </summary>
public static class EasyuiExtensions
{
public static MvcHtmlString EasyuiInput<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string type = "input")
{
return htmlHelper.EasyuiInput(expression, null,type:type);
}
public static MvcHtmlString EasyuiInput<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes, string type = "input")
{
return htmlHelper.EasyuiInput(expression, htmlAttributes: HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes),type:type);
}
public static MvcHtmlString EasyuiInput<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes, string type = "input")
{
ModelMetadata _metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
string _name = ExpressionHelper.GetExpressionText(expression);
string _fullName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(_name);
string _htmlCtrlstr = string.Empty;//控件Html字符
if (String.IsNullOrEmpty(_fullName))
{
throw new ArgumentException(_name + " 字段不存在!", "name");
}
TagBuilder tagBuilder = new TagBuilder(type);
tagBuilder.MergeAttributes(htmlAttributes);
tagBuilder.MergeAttribute("name", _fullName, true);
tagBuilder.MergeAttribute("id", _fullName, true);
//值
if (_metadata.Model != null)
{
if (type.ToLower() == "input") tagBuilder.MergeAttribute("value", (string)_metadata.Model);
else if (type.ToLower() == "textarea") tagBuilder.InnerHtml = (string)_metadata.Model;
}
///验证部分代码开始
Dictionary<string, object> _results = new Dictionary<string, object>();
string _validType = string.Empty;
if (htmlHelper.ViewContext.UnobtrusiveJavaScriptEnabled)
{
IEnumerable<ModelClientValidationRule> _clientRules = ModelValidatorProviders.Providers.GetValidators(_metadata ?? ModelMetadata.FromStringExpression(_name, htmlHelper.ViewData), htmlHelper.ViewContext).SelectMany(v => v.GetClientValidationRules());
if (_clientRules.Count() > 0)
{
_validType = string.Empty;
foreach (ModelClientValidationRule rule in _clientRules)
{
switch (rule.ValidationType)
{
case "required":
break;
case "length":
if (!string.IsNullOrEmpty(_validType)) _validType += ",";
if (rule.ValidationParameters.ContainsKey("min")) _validType += "'" + rule.ValidationType + "[" + rule.ValidationParameters["min"].ToString() + "," + rule.ValidationParameters["max"].ToString() + "]'";
else _validType += "'" + rule.ValidationType + "[0," + rule.ValidationParameters["max"].ToString() + "]'";
break;
default:
if (!string.IsNullOrEmpty(_validType)) _validType += ",";
_validType += "'" + rule.ValidationType + "'";
break;
}
}
if(!string.IsNullOrEmpty(_validType)) _validType = "validType:["+_validType+"]";
if (_metadata.IsRequired)
{
if (string.IsNullOrEmpty(_validType)) _validType = "required:true";
else _validType = "required:true," + _validType;
}
if (!string.IsNullOrEmpty(_validType)) tagBuilder.MergeAttribute("data-options", _validType);
}
}
///验证部分代码结束
if (type.ToLower() == "input") _htmlCtrlstr = tagBuilder.ToString((TagRenderMode.SelfClosing));
else if (type.ToLower() == "textarea") _htmlCtrlstr = tagBuilder.ToString();
return new MvcHtmlString(_htmlCtrlstr);
}
}
}
原文:http://www.cnblogs.com/mzwhj/p/3413464.html