【问题标题】:Request[string] Input string was not in a correct formatRequest[string] 输入字符串的格式不正确
【发布时间】:2013-07-07 19:05:06
【问题描述】:

我在 Razor 中有这段代码:

int num1 = int.Parse(Request["ddl" + item.MovieID]);

我得到错误:Input string was not in a correct format.

我该如何解决这个问题?

我也试过了:

string s = "ddl" + item.MovieID;
int num1 = int.Parse(Request[s]);

但我仍然得到同样的错误。这有效:

int num1 = int.Parse(Request["ddl1"]);

【问题讨论】:

  • 你想做什么?为什么 MovieId 甚至是 Key 的一部分?

标签: asp.net-mvc razor


【解决方案1】:

该键可能不存在并且返回一个空值。或者,该键的值不是“整数格式”——例如,它无法解析“$10.00”。

【讨论】:

  • 由于“格式错误”,它甚至没有尝试获取密钥。
  • MovieID 是字符串吗?如果不是,那可能就是问题所在。试试: var key = string.Format("ddl{0}", item.MovieID);
  • 试过这个。 key 确实得到了想要的值“ddl2”,但仍然是“错误的格式”。这没有任何意义
  • 好的,问题可能出在 int.Parse 上。
  • 这有点奇怪,当我将 Request["ddl" + item.MovieID] 传递给后端解析时,它无法解析。
【解决方案2】:

把你的代码修改成这个

string s = "ddl" + item.MovieID;
string key = Request[s];
int num1 = int.Parse(key);

在第一行放置一个断点,然后单步执行代码。如果您在单步执行代码时检查skey,您应该很快就会发现问题所在。

【讨论】:

  • 您不能在 Razor 视图中添加断点。但是,您可以在其他地方复制代码,并且可以调试它。
【解决方案3】:

如果文化不正确,这是一个常见错误。请确保字符串(要解析)符合当前线程文化。

如果数据与文化无关,理想情况下我们应该使用 int.Parse(data,CultureInfo.InvariantCulture)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2013-08-22
    相关资源
    最近更新 更多