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

时间:2013-11-18 11:37:08

标签: c# asp.net-mvc

我在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。

知道这是什么问题吗?

3 个答案:

答案 0 :(得分:15)

int techPageSize;
if (!int.TryParse(ConfigurationManager.AppSettings["TechPageSize"], out techPageSize))
{
    throw new InvalidOperationException("Invalid TechPageSize in web.config");
}

Int32.TryParse有两个影响:

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

PS:导入System.Configuration命名空间后,只需使用ConfigurationManager.AppSettings即可。

答案 1 :(得分:3)

的结果
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);

答案 2 :(得分:2)

尝试:

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

如果转换失败,则会出错。你可以使用int.Tryparse,如果它没有转换为int,但事实是这是一个配置设置,只有你可以控制这个值 - 它不是用户提交的,所以迎合错误将是过度的IMO。 / p>