繁体   English   中英

你调用的对象是空的

[英]Object reference not set to an instance of an object

在这行代码中

  <% var tmp = int.Parse(ViewData["numOfGroups"].ToString()); %>

我有错误: Object reference not set to an instance of an object 如何正确转换

ViewData["numOfGroups"]int

您应首先确保您的控制器操作正在设置此变量:

public ActionResult Index()
{
    ViewData["numOfGroups"] = "15";
    return View();
}

完成此操作后,您将不再获得NullReferenceException并且您的代码应该可以正常工作。

当然,因为我已经多次在这里写过,你应该更喜欢强类型视图而不是ViewData 您还应该相应地键入模型属性。 解析字符串不是视图的责任。 所以:

public ActionResult Index()
{
    var model = new MyModel
    {
        NumOfGroups = 15
    };
    return View(model);
}

在你看来:

<% var tmp = Model.NumOfGroups; %>

顺便说一句,这也应该避免,因为我觉得你在视图中声明变量意味着你有意使用它们。 视图不是用于声明变量和编写C#代码。 它们是标记。

如果错误与将ViewData["numOfGroups"]转换为int有关,那么您将获得FormatException 检查您是否确实将数据传递给视图,并且它包含numOfGroups键。

似乎ViewData["numOfGroups"]为空。 问题很可能不在于转换本身,而在于ViewData["numOfGroups"].ToString()

由于ViewData字典包含<string, object>您必须对值进行拆箱:

int tmp = (int)ViewData["numOfGroups"];

但是,如果转换无法正常工作,请检查对象是否为空,或者通过try / catch进行环绕... ...或者如果转换成功,则使用返回bool的TryParse()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM