Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
C# 在创建HtmlHelper之后、视图之前访问它_C#_Asp.net Mvc_Model View Controller_Html Helper_Application Start - Fatal编程技术网

C# 在创建HtmlHelper之后、视图之前访问它

C# 在创建HtmlHelper之后、视图之前访问它,c#,asp.net-mvc,model-view-controller,html-helper,application-start,C#,Asp.net Mvc,Model View Controller,Html Helper,Application Start,我知道我可以从应用程序启动ActionFilterAttribute添加一个自定义全局过滤器,并操作ModelState等等 在@Html(HtmlHelper)被发送到视图之前,是否有类似的方法来访问它 原因是我想编辑(或删除并重新创建)UnobtrosiveValidationAttributes。如果我尝试在视图中这样做:@Html.GetUnobtrusiveValidationAttributes(“PhoneNumber”).Clear()什么都没发生,但我想如果我早点到的话,它可能

我知道我可以从应用程序启动ActionFilterAttribute添加一个自定义全局过滤器,并操作ModelState等等

在@Html(HtmlHelper)被发送到视图之前,是否有类似的方法来访问它

原因是我想编辑(或删除并重新创建)UnobtrosiveValidationAttributes。如果我尝试在视图中这样做:
@Html.GetUnobtrusiveValidationAttributes(“PhoneNumber”).Clear()什么都没发生,但我想如果我早点到的话,它可能会起作用


(如果您想知道原因:我需要翻译里面的错误消息)

我不确定是否有办法拦截不引人注目的验证代码分配消息文本的位置。我也不确定这是否是最好的主意,因为一个属性可能有许多不同的验证(Required、Regex、StringLength等)

我可以告诉你还有其他方法来定位错误消息。一种开箱即用的方法是使用资源文件并定义资源键,而不是错误消息

[Required(ErrorMessageResourceName="resource-key")]
public string PhoneNumber { get; set; }

另一种可行但需要编写更多代码的方法是创建自己的自定义验证器,从存储错误消息的任何位置检索错误消息。我最近不得不这么做,因为我们所有的本地化都发生在数据库中。

是的,你说得对。我的本地化也在数据库中,我真的很努力不使用你提到的方法。我宁愿不使用不引人注目的javascript,也不愿这样做。我可以创建我自己的CustomRequiredAttribute,我会在没有EF Code的地方首先创建我设计数据库所需的属性。你能将视图模型与实体框架实体分开吗?如果可以,请将CustomRequiredAttribute放在视图模型上,并继续在实体框架实体上使用System.ComponentModel.DataAnnotations.Required。此外,您应该能够在实体框架实体上使用CustomRequiredAttribute,因为它也将继承自ValidationAttribute。是的,想想看。但当实体和ViewModel是一个整体时,我真的很高兴。是的,也许我可以让我的自定义属性和原来的一样。我会留意的。