ASP.NET Core中DevExpress TreeList/DataGrid删除确认按钮本地化方案咨询
全局自定义DevExpress DataGrid/TreeList删除确认按钮文本
问题分析
你当前在单个Razor页面的Editing.Texts配置中只能自定义删除确认的标题和提示消息,但对话框的"Yes"/"No"按钮文本属于DevExtreme全局对话框组件的默认文本,无法通过单个组件的配置项直接修改,需要全局覆盖才能避免重复修改每个页面。
解决方案一:全局覆盖DevExtreme对话框默认配置
步骤1:创建全局本地化配置脚本
在项目的wwwroot/js目录下新建dx-global-localization.js文件,添加以下代码:
// 从后端注入本地化文本(需在布局页中完成注入) var dxLocalization = { confirmYes: '@L["ConfirmYes"]', confirmNo: '@L["ConfirmNo"]' }; // 全局设置所有DevExtreme对话框的按钮文本 DevExpress.ui.dialog.defaultOptions({ options: { buttons: [ { text: dxLocalization.confirmYes, onClick: function(e) { e.component.hide(true); } }, { text: dxLocalization.confirmNo, onClick: function(e) { e.component.hide(false); } } ] } });
步骤2:在布局页中注入本地化并引用脚本
在你的主布局页(如_Layout.cshtml)中,确保在DevExpress脚本之后引用该文件,并注入本地化文本:
<!-- 先加载DevExpress的核心脚本 --> <abp-script-bundle name="DocSysDevExpressScriptBundle" /> <!-- 注入本地化文本并加载全局配置 --> <script> // 直接从IStringLocalizer获取文本 var dxLocalization = { confirmYes: '@L["ConfirmYes"]', confirmNo: '@L["ConfirmNo"]' }; </script> <script src="~/js/dx-global-localization.js"></script>
解决方案二:自定义DevExtreme本地化消息包
如果需要支持多语言自动切换,可以通过加载自定义本地化消息包实现:
步骤1:创建多语言本地化文件
在wwwroot/js/localization目录下创建对应语言的JSON文件,比如:
dx-messages-en.json
{ "Yes": "Yes", "No": "No" }
dx-messages-ar.json
{ "Yes": "نعم", "No": "لا" }
步骤2:全局加载本地化包并设置当前语言
在布局页中添加以下脚本:
<script> // 根据当前文化加载对应的本地化消息 DevExpress.localization.loadMessages(`/js/localization/dx-messages-@Thread.CurrentThread.CurrentCulture.Name.json`); // 设置当前语言环境 DevExpress.localization.locale("@Thread.CurrentThread.CurrentCulture.Name"); </script>
结合ASP.NET Core本地化服务(可选)
如果希望直接从后端资源文件获取文本,避免维护前端JSON文件,可以直接注入:
<script> DevExpress.localization.loadMessages({ "@Thread.CurrentThread.CurrentCulture.Name": { "Yes": '@L["ConfirmYes"]', "No": '@L["ConfirmNo"]' } }); DevExpress.localization.locale("@Thread.CurrentThread.CurrentCulture.Name"); </script>
验证效果
完成以上配置后,所有DataGrid和TreeList的删除确认对话框,以及其他DevExtreme组件调用的确认对话框,都会自动使用你定义的"Yes"/"No"文本,无需在每个组件页面单独配置。
内容的提问来源于stack exchange,提问作者Mahmoud Mardawi
相关产品推荐
相关产品推荐

