我在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。
知道这是什么问题吗?
答案 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>