Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用数据库中的值替换字符串中的代码_C#_Asp.net - Fatal编程技术网

C# 用数据库中的值替换字符串中的代码

C# 用数据库中的值替换字符串中的代码,c#,asp.net,C#,Asp.net,我正在替换字符串中的一些代码。我有一个函数,可以从emailtemplates表中获取电子邮件模板,其中包含一些代码,如###NewUserFirstName##和### 在该表的body列中。还有一个表定义了从哪个表中替换这些代码的值,所以对于##NewUserFirstName##我在第二个表中定义了UserProfile.FirstName和#password##UserProfile.password。我有如下所有合并代码: using (IMailMergeCodeManager

我正在替换字符串中的一些代码。我有一个函数,可以从emailtemplates表中获取电子邮件模板,其中包含一些代码,如
###NewUserFirstName##
###
在该表的body列中。还有一个表定义了从哪个表中替换这些代码的值,所以对于
##NewUserFirstName##
我在第二个表中定义了
UserProfile.FirstName
#password##
UserProfile.password
。我有如下所有合并代码:

  using (IMailMergeCodeManager mailMergeCodeManager = new ManagerFactory().GetMailMergeCodeManager())
    {
        mailMergeCodes = mailMergeCodeManager.GetAll().ToList();
    }
 using (ICampaignManager campaignManager = new ManagerFactory().GetCampaignManager())
 {
     using (IUserProfileManager UserProfileManager1 = new ManagerFactory().GetUserProfileManager())
     {
         using (IAccountManager AccountManager = new ManagerFactory().GetAccountManager())
         {
             using (ICallTypeManager CallTypeManager = new ManagerFactory().GetCallTypeManager())
             {
                 using (ICallOutcomeManager CallOutComeManager = new ManagerFactory().GetCallOutcomeManager())
                 {
                     using (ICallRecordingManager CallRecordingManager = new ManagerFactory().GetCallRecordingManager())
                     {
                         UserProfile UserProfile = UserProfileManager1.GetByfkAccountId(Convert.ToInt32(AccountId)).FirstOrDefault();
                         Account acc = AccountManager.GetById(Convert.ToInt32(AccountId));                                      
                         UserProfile CurrentLoggedInUser = UserProfileManager1.GetByfkAccountId(Convert.ToInt32(CurrentAccount.Id)).FirstOrDefault();
                         CallRecording callRecording = CallRecordingManager.GetById(callRecordingId);

                         if (subject.Contains("##password##") || body.Contains("##password##"))
                             password = GetPassword(UserProfile.UserAuthentication.EmailAddress);


                         foreach (MailMergeCode mergeCode in mailMergeCodes)
                         {
                             if (body.Contains(mergeCode.MailMerge)) 
                                 body = Regex.Replace(body, mergeCode.MailMerge, mergeCode.FieldName, RegexOptions.IgnoreCase);


                             if (subject.Contains(mergeCode.MailMerge) && !subject.Contains("##password##"))
                                 subject = Regex.Replace(subject, mergeCode.MailMerge, mergeCode.FieldName, RegexOptions.IgnoreCase);

                         }

                     }
                 }
             }
         }
     }

 }
现在,我用以下代码替换模板中的代码:

  using (IMailMergeCodeManager mailMergeCodeManager = new ManagerFactory().GetMailMergeCodeManager())
    {
        mailMergeCodes = mailMergeCodeManager.GetAll().ToList();
    }
 using (ICampaignManager campaignManager = new ManagerFactory().GetCampaignManager())
 {
     using (IUserProfileManager UserProfileManager1 = new ManagerFactory().GetUserProfileManager())
     {
         using (IAccountManager AccountManager = new ManagerFactory().GetAccountManager())
         {
             using (ICallTypeManager CallTypeManager = new ManagerFactory().GetCallTypeManager())
             {
                 using (ICallOutcomeManager CallOutComeManager = new ManagerFactory().GetCallOutcomeManager())
                 {
                     using (ICallRecordingManager CallRecordingManager = new ManagerFactory().GetCallRecordingManager())
                     {
                         UserProfile UserProfile = UserProfileManager1.GetByfkAccountId(Convert.ToInt32(AccountId)).FirstOrDefault();
                         Account acc = AccountManager.GetById(Convert.ToInt32(AccountId));                                      
                         UserProfile CurrentLoggedInUser = UserProfileManager1.GetByfkAccountId(Convert.ToInt32(CurrentAccount.Id)).FirstOrDefault();
                         CallRecording callRecording = CallRecordingManager.GetById(callRecordingId);

                         if (subject.Contains("##password##") || body.Contains("##password##"))
                             password = GetPassword(UserProfile.UserAuthentication.EmailAddress);


                         foreach (MailMergeCode mergeCode in mailMergeCodes)
                         {
                             if (body.Contains(mergeCode.MailMerge)) 
                                 body = Regex.Replace(body, mergeCode.MailMerge, mergeCode.FieldName, RegexOptions.IgnoreCase);


                             if (subject.Contains(mergeCode.MailMerge) && !subject.Contains("##password##"))
                                 subject = Regex.Replace(subject, mergeCode.MailMerge, mergeCode.FieldName, RegexOptions.IgnoreCase);

                         }

                     }
                 }
             }
         }
     }

 }
}

但下面的行将
##NewUserFirstName##
设置为
UserProfile.FirstName

body=Regex.Replace(body,mergeCode.MailMerge,mergeCode.FieldName,RegexOptions.IgnoreCase)

而不是从
UserProfile.FirstName
即“Joe Smith”获取值


如何解决此问题?

使用此代码如果您有任何问题,请告诉我

if (Body.Contains(""##password##""))
 {
 Body = Body.Replace(""##password##"", yourpassword_string);
 }

您是否使用了string.replace让我知道这是否解决了您的问题Hi@Skhurams:我正在尝试将mergeCode.MailMerge替换为mergeCode.FieldName,其中mergeCode.MailMerge是##NewUserFirstName###,mergeCode.FieldName是UserProfile.FirstName,但我希望UserProfile.FirstName的值为“Joe smith”当您向主题和主体添加字符串时,请使用我提到的代码替换字符串