Javascript Reactjs+;ASP MVC不引人注目的验证
我有下一个密码Javascript Reactjs+;ASP MVC不引人注目的验证,javascript,asp.net-mvc-4,unobtrusive,Javascript,Asp.net Mvc 4,Unobtrusive,我有下一个密码 componentDidMount() { super.componentDidMount(); let jobj = $(ReactDOM.findDOMNode(this)); $.validator.unobtrusive.parse(jobj); } 运行此操作后,我得到错误:uncaughttypeerror:无法读取未定义的属性“unobtrusive” 如何使导入ASP MVC不引人注目,并进行jquery验证?从错误中可以看出,$.val
componentDidMount() {
super.componentDidMount();
let jobj = $(ReactDOM.findDOMNode(this));
$.validator.unobtrusive.parse(jobj);
}
运行此操作后,我得到错误:uncaughttypeerror:无法读取未定义的属性“unobtrusive”
如何使导入ASP MVC不引人注目,并进行jquery验证?从错误中可以看出,$.validator尚未连接 在呈现React组件之前,检查是否遗漏了jquery.validate.min.js(请参阅) 关于使用ASP.NETMVC和非结构化,这也是我过去几天一直在研究的问题。让我分享一下我对此的一些初步想法: 使用React进行即时验证 从非结构化验证的工作方式来看,只要您增强JSX或TSX(Typescript v1.6+)或使用data val-*属性的react脚本,非结构化插件就已经为您发挥了神奇的作用
var TextInputComponent = React.createClass({
render() {
return (
<div>
<input data-val="true" data-val-required="error msg" name="Test" type="text" />
<span className="text-danger" data-valmsg-replace="true" data-valmsg-for="Test"></span>
</div>
);
}
});
var TextInputComponent=React.createClass({
render(){
返回(
);
}
});
问题空间
问题是我们(ASP.NET MVC开发人员)习惯于让Razor通过@Html.TextFor(…)方法(以及其他输入类型的变体)为我们生成所有属性。现在我们需要将这些属性传递给ReactJS组件,以便它们知道应该如何验证特定字段
我计划测试以下各项是否有效:
public static IDictionary<string, object> UnobtrusiveValidationAttributesFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> propertyExpression)
{
var propertyName = html.NameFor(propertyExpression).ToString();
var metadata = ModelMetadata.FromLambdaExpression(propertyExpression, html.ViewData);
var attributes = html.GetUnobtrusiveValidationAttributes(propertyName, metadata);
return attributes;
}
public static IDictionary UnobtrusiveValidationAttribute for(此HtmlHelper html,表达式属性Expression)
{
var propertyName=html.NameFor(propertyExpression.ToString();
var metadata=modelmetada.FromLambdaExpression(propertyExpression,html.ViewData);
var attributes=html.getUnobtrusiveValidationAttribute(propertyName,元数据);
返回属性;
}
简言之,为了有一个完整的ASP.NET验证表单,我们需要告诉ReactJS组件所有必要的数据val-*info。感谢您的回复,我解决了这个窗口这样的问题。$.validator.unobtrusive.parse(jobj);而是$.validator.unobtrusive.parse(jobj);“你的发现有什么结果,@ronnypm?”?