【发布时间】:2017-11-07 23:59:01
【问题描述】:
在 ASP.NET MVC Core 中是否有过滤器或其他机制,我可以在呈现视图之前评估模型的属性和值?我正在注释我的模型的一些属性,我需要在模型在视图中呈现之前翻译它们的值。
我尝试使用“IDisplayMetadataProvider”,但这仅在模型属性是模型表达式的一部分时才有效。就我而言,它们不是——它们通常仅用于显示目的(例如 ViewBag.Title)。
简单示例:
public class MyModel
{
[Translate]
public string TitleKey { get; set; }
public string SomeOtherProp {get;set;}
public int AnotherProp {get;set;}
}
public class MyController
{
[HttpGet]
public IActionResult Index()
{
var vm = _service.GetViewModel();
vm.TitleKey = "Title.Translation.Key";
return View(vm);
}
}
在视图中渲染模型之前,我需要有一些方法来检查模型并找出哪些属性带有“翻译”注释。如果是,则获取该属性的值并将其更改为其他值。在此示例中,我想获取“TitleKey”属性的值,调用翻译服务来翻译该值,然后在该值到达视图之前重新分配该值。
【问题讨论】:
-
可能是的,但您能否包含您正在尝试做的事情的 sn-p?
-
很遗憾,我无法使用内置的本地化支持。我正在使用的是高度定制的,不使用 resx 文件。诚然,可以覆盖某些行为以使其工作,但现在,我真正需要的只是一种评估这些属性的方法,我的工作就完成了。
标签: c# asp.net-mvc asp.net-core-mvc