我在 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。
知道问题出在哪里吗?
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
就足够了。
结果
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);
尝试:
Convert.ToInt32(System.Web.Configuration.WebConfigurationManager.AppSettings["TechPageSize"])
如果转换失败,将会出错。你可以使用 int.Tryparse 以防它不转换为 int,但事实是这是一个配置设置,只有你可以控制这个值 - 它不是用户提交的,所以在我看来,迎合错误将是矫枉过正。
为了简洁起见:
int pageSize = int.TryParse(ConfigurationManager.AppSettings["TechPageSize"], out int appPageSize)
? appPageSize
: throw new InvalidOperationException("Invalid TechPageSize in web.config");