首先我对C#相当新,但我正在尝试将字符串转换为Int。我在Visual Studio中没有错误,但当我实际尝试在Sitecore中预览我的页面时,我得到一个错误。错误是System.FormatException:输入字符串的格式不正确。
这是我的代码:
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (numColumns != null)
numColumns = Convert.ToInt32(numColumnStr);
我希望列的默认值为2.我有
答案 0 :(得分:1)
在我看来你正在检查错误的变量。也许你的意思是这样做:
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (!String.IsNullOrEmpty(numColumnStr))
numColumns = Convert.ToInt32(numColumnStr);
答案 1 :(得分:1)
看起来即将到来的字符串不是有效的整数。
使用tryParse()
,如果它被成功解析或者它是一个有效的整数,它将返回一个标记true
:
bool parsed = int.TryParse(numColumnStr,out numColumns);
if(parsed)
// do something with numColumns here
答案 2 :(得分:1)
我做了两处更改,首先我使用了tryparse而不是convert。
其次,我做了判断调用,你打算将字符串比作null,而不是整数。所以我更新了那一行来检查字符串是空还是空。
public string numColumnStr = "";
numColumnStr = parameters.columns;
int numColumns = 2;
if (!string.IsNullOrEmpty(numColumnStr))
int.TryParse(numColumnStr, out numColumns);
答案 3 :(得分:1)
虽然你的代码非常尴尬,但它可以进行一些小改动:
变化:
if (numColumns != null)
为:
if (numColumnStr != null)
答案 4 :(得分:0)
这是您需要的c#代码:
int numColumns = 2; // default value
int.TryParse(parameters.columns, out numColumns);
现在我怀疑parameters.columns实际上并没有指向你的期望。如果值为null或为空,则获得的错误是抛出的错误。
答案 5 :(得分:0)
由于您使用的是Sitecore,您还可以使用Sitecore.Kernel.dll中的实用程序功能:
int numColumns = Sitecore.MainUtil.GetInt(parameters.columns, 2)
FYI,该函数内部执行以下操作:
public static int GetInt(string value, int defaultValue)
{
int result;
if (value == null || value.Length == 0 || !int.TryParse(value, out result))
return defaultValue;
else
return result;
}