Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Asp.net Core 2中使用jQuery获取已翻译的ModelState错误消息?_Asp.net_Asp.net Mvc_Validation_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

如何在Asp.net Core 2中使用jQuery获取已翻译的ModelState错误消息?

如何在Asp.net Core 2中使用jQuery获取已翻译的ModelState错误消息?,asp.net,asp.net-mvc,validation,asp.net-core,asp.net-core-mvc,Asp.net,Asp.net Mvc,Validation,Asp.net Core,Asp.net Core Mvc,我正在尝试验证Asp.net Core 2.0应用程序中的HTML表单,使用和,正如文档中强烈建议的那样。我还有一些自定义Javascript来在通知窗口中显示错误消息 我有一个这样的模型: 类模型 { [必需(ErrorMessage=“必需”)] [显示(Name=“电子邮件”)] [电子邮件地址(ErrorMessage=“ValidEmail”)] 公共字符串电子邮件{get;set;} } 在多次尝试之后,我让Asp.net发出一个输入标记,准备验证,并显示正确本地化的错误消息:

我正在尝试验证Asp.net Core 2.0应用程序中的HTML表单,使用和,正如文档中强烈建议的那样。我还有一些自定义Javascript来在通知窗口中显示错误消息

我有一个这样的模型:

类模型
{
[必需(ErrorMessage=“必需”)]
[显示(Name=“电子邮件”)]
[电子邮件地址(ErrorMessage=“ValidEmail”)]
公共字符串电子邮件{get;set;}
}
在多次尝试之后,我让Asp.net发出一个
输入
标记,准备验证,并显示正确本地化的错误消息:


在提交表单之前,我已设法在客户端进行验证。jQuery验证正确地检测到一个空字段,我可以使用Javascript显示来自
datavalrequired
的消息。为了完整性起见,我有这样的方法来处理消息:

函数onFormValidationFailed(e,args:JQueryValidation.Validator){ ErrorManager.clearErrors(); for(args.errorList中的变量错误){ ErrorManager.addError(args.errorList[error].message); } } $(“表格”) .on(“无效的form.validate”,onFormValidationFailed); 但是,诸如
test@example
被客户端验证接受,因此提交表单。然后,Asp.net模型验证会捕获该错误。在我的操作中,我可以看到
this.ModelState.IsValid
确实是
false
,正如您在上面看到的,该字段被正确识别为类
输入验证错误
错误

我的问题是,我不知道如何获取相关的错误消息来显示它

我试图在加载页面时调用
$(“form”).validate()
,尝试触发验证,但没有收到任何错误消息。(或至少未触发
无效表单。验证
事件。)

作为一种回退解决方案,我尝试使用
让Asp.net将错误消息注入到可以通过Javascript获取的地方。但这很快就变成了一条死胡同,因为消息没有本地化


  • 瓦利德梅尔
事实上,我在服务器端进行了检查,
ModelState
集合不包含本地化消息

有人能帮我找到一个解决方案吗?当我从带有无效模型状态的服务器返回时,我可以通过Javascript获得相关的本地化数据注释错误消息,以便向用户显示它们?(或者建议更好的做法?)

我找到了我的问题的答案,虽然有点尴尬,但我在这里分享它,以防其他人发现自己处于类似的情况

实际问题 事实证明,我正在编写的代码与上面描述的不完全一样,但我没有注意到这一点,直到我尝试创建一个精简版本来进行复制

这个模型看起来很像这样:

类模型:ModelData
{
}
类模型数据
{
[必需(ErrorMessage=“必需”)]
[显示(Name=“电子邮件”)]
[电子邮件地址(ErrorMessage=“ValidEmail”)]
公共字符串电子邮件{get;set;}
}
视图的代码如下所示:

@model MyApp.model
控制器有两种类似的方法:

[HttpGet]
公共IActionResult编辑()
{
返回视图(新模型());
}
[HttpPost]
公共IActionResult编辑(模型数据)
{
if(ModelState.IsValid)
{
数据=_service.Save(数据);
}
var模型=新模型
{
Email=data.Email
};
返回视图(模型);
}
我的
resx
文件名为
Model.resx

根本原因 我错过的是模型中的继承

一旦我注意到,一切都有意义:

  • 构建视图时,类型为
    model
    的模型在
    model.resx
  • 但是,在操作中进行验证时,验证的类型是no
    ModelData
    ,资源管理器找不到该类型的翻译,因为没有
    ModelData.resx
修复 我所做的是解决我的问题。我的模型现在看起来像这样:

类模型
{
公共模型数据{get;set;}
}
这样的观点:

@model MyApp.model
并将所有相关翻译移动到
ModelData.resx
。由于
ModelData
是我正在为控制器操作构建和验证的
input
s类型,因此资源总是得到正确处理

我找到了我的问题的答案,虽然有点尴尬,但我在这里分享它,以防其他人发现自己处于类似的情况

实际问题 事实证明,我正在编写的代码与上面描述的不完全一样,但我没有注意到这一点,直到我尝试创建一个精简版本来进行复制

这个模型看起来很像这样:

类模型:ModelData
{
}
类模型数据
{
[必需(ErrorMessage=“必需”)]
[显示(Name=“电子邮件”)]
[电子邮件地址(ErrorMessage=“ValidEmail”)]
公共字符串电子邮件{get;set;}
}
视图的代码如下所示:

@model MyApp.model
控制器有两种类似的方法:

[HttpGet]
公共IActionResult编辑()
{
返回视图(新模型());
}
[HttpPost]
公共IActionResult编辑(模型数据)
{
if(ModelState.IsValid)
{
数据=_service.Save(数据);
}
var模型=新模型
{
Email=data.Email
};
返回视图(模型);
}
我的
resx
文件名为
Model.resx

根本原因 我错过的是模型中的继承

一旦我注意到,一切都让森