ConfigurationManager.AppSettings["isRemembed"]通过方法转化为bool型
时间: 2024-03-29 17:40:10 浏览: 61
可以使用以下代码将字符串类型的配置值转换为 bool 类型:
```
bool isRemembed;
bool.TryParse(ConfigurationManager.AppSettings["isRemembed"], out isRemembed);
```
这里的 `TryParse` 方法会尝试将字符串转换为 bool 类型,并返回转换是否成功的布尔值。如果转换成功,转换后的值会被存储在 `isRemembed` 变量中。如果转换失败,`isRemembed` 的值将保持不变。
相关问题
C#通过app.config配置文件控制名为ButStart按钮的透明与不透明的完整代码
在C#中,你可以使用`app.config`配置文件来存储程序的设置,包括像按钮颜色这样的外观属性。但需要注意的是,`app.config`主要是用于存储应用程序级别的配置信息,对于UI元素的直接样式修改通常更倾向于使用XAML或者运行时动态改变控件属性。这里是一个示例,说明如何读取`app.config`中关于按钮透明度的配置:
首先,在`app.config`中添加一个配置节和对应的值,例如:
```xml
<configuration>
<configSections>
<section name="buttonSettings" type="System.Configuration.NameValueSectionHandler, System" />
</configSections>
<buttonSettings>
<add key="ButtonTransparent" value="True"/>
</buttonSettings>
</configuration>
```
然后,在C#代码中,通过`ConfigurationManager`来获取这个值:
```csharp
using System.Configuration;
public partial class YourForm : Form
{
public YourForm()
{
InitializeComponent();
// 获取配置文件中ButStart按钮是否透明的值
bool buttonTransparent = bool.Parse(ConfigurationManager.AppSettings["ButtonTransparent"]);
// 如果配置为true,则设置按钮为透明
if (buttonTransparent)
ButStart.BackgroundImage = new Bitmap(ButStart.BackgroundImage, new Size(ButStart.BackgroundImage.Width, ButStart.BackgroundImage.Height), Graphics.Copy像素);
else
ButStart.BackgroundImageLayout = ImageLayout.None; // 如果不透明则恢复默认布局
}
}
```
在这个例子中,`bool.Parse()`用于将字符串转换为布尔值。如果透明度值为`True`,则设置背景图像为透明;如果为`False`,则保持默认的不透明。
优化代码 /// <summary> /// 获取验证码 /// </summary> /// <param name="phone"></param> /// <returns></returns> public ActionResult GetVerificationCode(string phone) { try { //if (phone.IsNullOrEmpty()) // return Error("未获取对应手机号,请刷新重试!"); ///生成六位随机码 var verifyCode = VerifyCode(); //存储临时验证码 SessionHelper.Session["verifyCode"] = verifyCode; string code = "{"code":""+ verifyCode + ""}"; //判断是否手机存在在系统重 if (phone.IsNullOrEmpty()) return Error("手机号码不允许为空"); //发送短信 //var result = PhoneMessage.PhoneMessageService("smsInvoice", "13003931757", verifyCode, 1, 0); var result = SmsHelper.SendSms(phone, "SMS_216730297", code); bindCustomerBusiness.GetLogger().WriteOperateLogNoUser("获取验证码", result.ToJson(), true); return Success(); } catch (Exception ex) { return Error(ex.StackTrace); } } public ActionResult GetVerificationCode2(string phone) { try { //if (phone.IsNullOrEmpty()) // return Error("未获取对应手机号,请刷新重试!"); ///生成六位随机码 var verifyCode = VerifyCode(); //存储临时验证码 SessionHelper.Session["verifyCode"] = verifyCode; string code = "{"code":"" + verifyCode + ""}"; //判断是否手机存在在系统重 if (phone.IsNullOrEmpty()) return Error("手机号码不允许为空"); else { var phoneCount = bindCustomerBusiness.Service.GetIQueryable<Base_User>(). Where(a => a.Phone == phone).Count(); if (phoneCount == 0) return Error("手机号未绑定,首次应扫码登录"); } //发送短信 //var result = PhoneMessage.PhoneMessageService("smsInvoice", "13003931757", verifyCode, 1, 0); var result = SmsHelper.SendSms(phone, "SMS_216730297", code); bindCustomerBusiness.GetLogger().WriteOperateLogNoUser("获取验证码", result.ToJson(), true); return Success(); } catch (Exception ex) { return Error(ex.StackTrace); } }
这段代码可以进行如下的优化:
1. 将相同的代码封装成一个方法,避免代码重复。
2. 将短信模板ID和验证码的格式放到配置文件中,方便维护。
3. 使用参数校验框架,比如 FluentValidation,来校验手机号码是否为空。
4. 将异常信息记录到日志中,方便问题排查。
下面是优化后的代码:
```
/// <summary>
/// 获取验证码
/// </summary>
/// <param name="phone"></param>
/// <param name="bindFirstTime"></param>
/// <returns></returns>
public ActionResult GetVerificationCode(string phone, bool bindFirstTime = false)
{
try
{
// 参数校验
var validator = new GetVerificationCodeValidator();
var validationResult = validator.Validate(new GetVerificationCodeInput { Phone = phone });
if (!validationResult.IsValid)
{
return Error(validationResult.Errors.First().ErrorMessage);
}
// 生成六位随机码
var verifyCode = VerifyCode();
// 存储临时验证码
SessionHelper.Session["verifyCode"] = verifyCode;
// 判断是否首次绑定
if (bindFirstTime)
{
var phoneCount = bindCustomerBusiness.Service.GetIQueryable<Base_User>().Where(a => a.Phone == phone).Count();
if (phoneCount == 0)
{
return Error("手机号未绑定,首次应扫码登录");
}
}
// 发送短信
var smsTemplateId = ConfigurationManager.AppSettings["SmsTemplateId"];
var smsContent = string.Format(ConfigurationManager.AppSettings["SmsContentFormat"], verifyCode);
var result = SmsHelper.SendSms(phone, smsTemplateId, smsContent);
// 记录日志
bindCustomerBusiness.GetLogger().WriteOperateLogNoUser("获取验证码", result.ToJson(), true);
return Success();
}
catch (Exception ex)
{
// 记录异常日志
bindCustomerBusiness.GetLogger().WriteErrorLog(ex.Message, ex.StackTrace);
return Error("获取验证码失败");
}
}
public class GetVerificationCodeValidator : AbstractValidator<GetVerificationCodeInput>
{
public GetVerificationCodeValidator()
{
RuleFor(x => x.Phone).NotEmpty().WithMessage("手机号码不能为空");
}
}
public class GetVerificationCodeInput
{
public string Phone { get; set; }
}
```
阅读全文