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

时间:2020-03-19 07:40:01

标签: c# bootbox resource-files

在我的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 个答案:

答案 0 :(得分:1)

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

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

    • 键:标题值:地址标题 $ TITLE $ 保存
    • 密钥:消息值:您将被发送到 $ FORM $ 进行验证,亲爱的 $ CUSTOMER $
  2. 在准备视图的Razor页面中,您还可以在视图内以JS对象的形式提供服务器端资源,以便浏览器/ JavaScript也可以使用它们:

<script>
  var resourceObj = {
      title: '@Resources.Title',
      message: '@Resources.Message'
  }
</script>
  1. 在浏览器中加载视图后,您可以使用JavaScript访问该JS对象并设置对话框标题和消息:
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全局命名空间的一部分,只是为了使一切变得简单。