在我的控制器中,如果我提供此代码,则显示此行中的错误
int id = Convert.ToInt32(val);
为输入字符串的格式不正确。
我也尝试像这样转换它
int id = int.parse(val);`
然后它也向我显示了同样的错误。
这是我的代码。我错过了什么。
public ActionResult Edit(demo demo)
{
string val = Request.Form["id"];
int id = Convert.ToInt32(val);
}
答案 0 :(得分:4)
您应该使用int.TryParse()来确定val是否为int。
public ActionResult Edit(demo demo)
{
var val = Request.Form["id"]; //could be an object here.
int id = 0;
double dblId = 0.0;
if (int.TryParse(val, out id))
{
//id is an int here!
}
if (double.TryParse(val, out dblId))
{
//dblId is a double here!
//you can convert the double to an int if you wish:
id = Convert.ToInt32(dblId);
}
}
答案 1 :(得分:1)
我经常尝试使用这样的代码进行编码,使用模型比使用Request.Form更安全。
但是,如果你必须这样做,我要检查字符串是否为空或为空:
string val = Request.Form["id"];
if (string.isNullOrEmpty(val))
val = "0";
int id = int.Parse(val)
否则,我会使用tryParse:
int id = 0;
int.tryParse(Request.Form["id"], out id);
答案 2 :(得分:1)
确保您永远不会收到任何错误,无论您使用的是double.TryParse
你去:
string val = Request.Form["id"];
val = val.Replace(',', '.');
double tempID = -1.0;
int id = -1;
if (double.TryParse(val, out tempID))
{
id = Convert.ToInt32(tempID);
}
这样,如果你的双人没有。它将首先用a替换。
你可以随时添加一个else语句,以便在val真的无法转换时