将我的值从String转换为Int

时间:2014-07-28 11:54:31

标签: .net asp.net-mvc c#-4.0

在我的控制器中,如果我提供此代码,则显示此行中的错误
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);
}

3 个答案:

答案 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真的无法转换时