如何在CSHTML的Bootbox对话框中动态使用资源文件字符串?
实现Bootbox对话框动态调用资源字符串的方法
嘿,我来一步步教你搞定这个需求:
1. 确认资源文件配置
首先你已经在资源文件里创建了两个带占位符的字符串:
- 标题资源键(比如
AddressDialogTitle):值为Addresstitle {0} save - 消息资源键(比如
AddressDialogMessage):值为you will be send to {0} for {1} verification dear {2}
记得替换成你实际的资源文件名和键名哦。
2. 在CSHTML中引入资源字符串
在你的CSHTML视图里,通过Razor语法获取资源文件里的字符串,把它们传递给前端JS:
@{ // 替换成你的资源文件命名空间和键名 var dialogTitle = Resources.MyResources.AddressDialogTitle; var dialogMessage = Resources.MyResources.AddressDialogMessage; }
3. 编写JS字符串格式化函数
原生JavaScript没有像C#那样的String.Format方法,我们自己写一个简单的工具函数,用来替换字符串里的{0}、{1}这类占位符:
// 模拟C# String.Format的格式化函数 function formatString(str, ...args) { return str.replace(/{(\d+)}/g, function(match, index) { return args[index] !== undefined ? args[index] : match; }); }
4. 动态生成Bootbox对话框内容
现在把资源字符串和你的动态变量结合,生成最终的标题和消息:
// 假设ADDRESS、fromaddress、customer是你已经定义好的动态变量 var formattedTitle = formatString('@Html.Raw(dialogTitle)', ADDRESS); // 参数顺序对应占位符{0}、{1}、{2} var formattedMessage = formatString('@Html.Raw(dialogMessage)', fromaddress, 'verification', customer); // 初始化Bootbox对话框 bootbox.dialog({ title: formattedTitle, message: formattedMessage, buttons: { success: { label: "Next", className: "btn btn-success", callback: function(){ // 这里放你的业务逻辑 } } } });
小细节说明
- 用
@Html.Raw()包裹资源字符串是为了防止Razor自动转义占位符里的大括号,确保{0}这类标记能原样传递给JS。 - 如果
{1}位置需要动态值(不是固定的"verification"),直接把第三个参数换成对应的变量就行。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

