[英]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.