提问人:Noor Uddin 提问时间:11/14/2022 最后编辑:Noor Uddin 更新时间:11/14/2022 访问量:174
如何在从控制器返回视图之前替换 html 标签文本,如标签或 h1 文本?
How to replace html tag text like label or h1 text before return View from Controller?
问:
我正在开发 ASP MVC .NET 6 应用程序。应用程序的默认语言是英语。现在,我们要求在管理面板中实现不同的语言选项,如西班牙语、阿拉伯语等。我们将为每个屏幕/视图设置一个 JSON 文件,其中将为屏幕的每个标签设置所有标签文本,如以下示例所示:
[
{
"LabelHtmlId": "FirstName",
"LablelText" : "User First Name",
"ScreenId": 1,
"LanguageCode: "Eng"
},
{
"LabelHtmlId": "LastName",
"LablelText" : "User Last Name",
"ScreenId": 1,
"LanguageCode: "Eng"
}
]
现在,管理员将能够为不同语言的每个屏幕标签设置JSON文件,如上面的示例所示。 现在我们的要求是,我们必须在控制器中的 Return View() 之前调用该函数。此函数将采用 ScreenId 和 lanuageCode 作为参数,并将替换 JSON 文件中 HTML 文件中的所有标签文本。 例如,如果标签如下所示:
<label id="FirstName">First Name</label>
现在,在控制器中执行 Return View() 之前的函数后,上面的文本将替换为:
<label id="FirstName">User First Name</label>
因为管理员在此标签的 JSON 文件中添加了此文本。
现在我的问题是,一旦所有模型绑定都与 HTML 完成,我如何在返回 ActionMethod 的视图行之前获得完整的 HTML,以便我解析所有标签并替换 JSON 文件中的文本。是否有任何机制可以在 ActionExecuted 上应用客户筛选器。
请不要引用任何前端解决方案,如 JavaScript、jQuery,因为我们不会替换前端的标签文本。这不是要求。我们必须在返回 View() 之前在服务器端执行所有活动。如果我们在页面准备就绪后在前端实现,那么它将首先呈现默认文本,然后从 JSON 替换,因此客户可能无法顺利呈现页面。
谢谢
我正在考虑从 document.ready 上的 HTML 中获取所有标签,然后使用 JavaScript/jQuery 替换 JSON 文件中每个标签的文本,但此解决方案不可行,因为它会影响浏览器中页面的平滑呈现。一旦默认标签被呈现,它就会从JSON文件中替换,因此用户会感觉到标签的变化影响了从默认语言到所选语言。
我也有 HTMLAgilityCode 的想法,但在控制器中,我现在不知道如何在使用 HTML 进行所有数据绑定过程后以正确的方式实现它。
答: 暂无答案
评论