Gibt es einen Filter oder einen anderen Mechanismus in ASP.NET MVC Core, wo ich die Eigenschaft und den Wert des Modells auswerten kann, bevor die Ansicht gerendert wird? Ich notiere einige Eigenschaften meines Modells, und ich muss deren Wert übersetzen, bevor das Modell in der Ansicht gerendert wird.So bewerten Sie die Eigenschaft und den Wert eines Modells vor dem Rendern Rendern
Ich habe versucht, mit dem 'IDisplayMetadataProvider' aber das funktioniert nur, wenn die Modelleigenschaften Teil eines Modellausdrucks sind. In meinem Fall sind sie nicht - sie werden oft nur für die Anzeige verwendet (wie der ViewBag.Title zum Beispiel).
Einfaches Beispiel:
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);
}
}
Bevor das Modell in der Ansicht gerendert wird, muß ich das Modell und die Erkenntnis, einen Weg haben, zu inspizieren, die Eigenschaften mit Anmerkungen versehen werden mit „Übersetzen“. Wenn dies der Fall ist, dann nimm den Wert dieser Eigenschaft und ändere ihn in etwas anderes. In diesem Beispiel möchte ich den Wert der "TitleKey" -Eigenschaft abrufen, einen Übersetzungsdienst aufrufen, um diesen Wert zu übersetzen, und dann den Wert neu zuweisen, bevor er die Ansicht erreicht.
Ja, möglicherweise, aber können Sie einen Ausschnitt dessen hinzufügen, was Sie versuchen zu tun? –
Es gibt bereits ein empfohlenes Muster von Microsoft für [Globalisierung und Lokalisierung in ASP.NET Core] (https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization) –
Leider kann ich nicht Verwenden Sie die integrierte Unterstützung für die Lokalisierung. Woran ich arbeite, ist stark angepasst und verwendet keine Resx-Dateien. Zugegeben, es mag möglich sein, ein bestimmtes Verhalten zu überschreiben, damit es funktioniert, aber für den Moment brauche ich nur eine Möglichkeit, diese Eigenschaften zu bewerten, und meine Arbeit ist erledigt. –