动态替换资源文件中的字符串

replace string dynamically in resource file

在我的 cshtml 页面中,我有一个这样的引导框对话框

bootbox.dialog({
                  title: "Addresstitle " + ADDRESS + " save",
                  message: "you will be send to " + fromaddress + "for verification dear" + customer,
                  buttons: {
                   success: {
                                label: "Next,
                                className: "btn btn-success",
                                callback: function(){
                                      //some logic
                                }
                            }
                        }
                    });

我将在资源文件中创建 2 个资源字符串,一个用于标题,一个用于消息

Addresstitle {0} save
you will be send to {0} for {1} verification dear {2}

如何在资源文件中动态设置此文本?

我不确定您的项目结构,但这里是解决此问题的高级想法:

  1. 您将字符串存储到某个名为 Resources 的 C# class 资源中($TITLE$、$FORM$ 和 $CUSTOMER$ 是稍后将在 JS 中替换的占位符):

    • 键:标题值:地址标题$TITLE$保存
    • 键:消息值:亲爱的$CUSTOMER$[,您将被发送到$FORM$进行验证=35=]。
  2. 在准备视图的 Razor 页面中,您还可以在视图中将服务器端资源作为 JS object 提供,以便 browser/JavaScript 也可以使用它们:

<script>
  var resourceObj = {
      title: '@Resources.Title',
      message: '@Resources.Message'
  }
</script>
  1. 在浏览器中加载视图后,您可以使用 JavaScript 访问该 JS object 并设置对话框标题和消息:
bootbox.dialog({
   title: resourceObj.title.replace("$TITLE$", ADDRESS),
   message: resourceObj.message.replace("$FORM$", fromaddress).replace("$CUSTOMER$", customer),
   buttons: {
       success: {
           label: "Next,
           className: "btn btn-success",
           callback: function(){
               //some logic
           }
       }
   }
});

resourceObj 在这个例子中是 JS 全局命名空间的一部分,只是为了让一切更简单。