如何将 System.Web.Configuration.WebConfigurationManager.AppSettings 从 String 转换为 INT

问题描述 投票:0回答:4

我在 web.config 文件中定义了以下内容:-

<add key="TechPageSize" value="20" />

但是我无法在分页参数中引用该值,如下所示:-

var servers = repository.AllFindServers(withOutSpace).OrderBy(a => a.Technology.Tag).ToPagedList(page, (Int32)System.Web.Configuration.WebConfigurationManager.AppSettings["TechPageSize"]);

我会得到一个错误,它无法将 String 更改为 INT。

知道问题出在哪里吗?

c# asp.net-mvc
4个回答
20
投票
int techPageSize;
if (!int.TryParse(ConfigurationManager.AppSettings["TechPageSize"], out techPageSize))
{
    throw new InvalidOperationException("Invalid TechPageSize in web.config");
}

Int32.TryParse
有两个作用:

  • 如果可能,它将应用程序设置转换为整数并将结果存储在
    techPageSize
    中。
  • 如果无法转换该值,该方法将返回
    False
    ,允许您根据需要处理错误。

PS:导入 ConfigurationManager.AppSettings

 命名空间后,使用 
System.Configuration
 就足够了。


4
投票

结果

System.Web.Configuration.WebConfigurationManager.AppSettings["TechPageSize"]

是一个字符串,你不能只将字符串转换为int。使用 Convert.ToInt32 或 int.TryParse 获取字符串的整数值。

int pagesize = Convert.ToInt32(System.Web.Configuration.WebConfigurationManager.AppSettings["TechPageSize"]);

bool succeed = int.TryParse(System.Web.Configuration.WebConfigurationManager.AppSettings["TechPageSize"], out pagesize);

4
投票

尝试:

Convert.ToInt32(System.Web.Configuration.WebConfigurationManager.AppSettings["TechPageSize"])

如果转换失败,将会出错。你可以使用 int.Tryparse 以防它不转换为 int,但事实是这是一个配置设置,只有你可以控制这个值 - 它不是用户提交的,所以在我看来,迎合错误将是矫枉过正。


0
投票

为了简洁起见:

int pageSize = int.TryParse(ConfigurationManager.AppSettings["TechPageSize"], out int appPageSize) 
    ? appPageSize 
    : throw new InvalidOperationException("Invalid TechPageSize in web.config");
© www.soinside.com 2019 - 2024. All rights reserved.