System.InvalidCastException:在ASP.NET MVC局部视图
问题描述:
在控制器:System.InvalidCastException:在ASP.NET MVC局部视图
public ActionResult Index()
{
ViewData["page"] = 0;
return View(data);
}
public ActionResult More(long page = 0)
{
ViewData["page"] = page;
return View(data);
}
所以,我有两个观点:Index.aspx的和More.aspx。我创建了一个在这两个视图中都使用的局部视图(PartialView.ascx)。在部分视图中,它访问了Model和ViewData。奇怪的(我反正)是,当我试图施放计算机[“页”]对长,我会得到如下铸造例外的意见之一:
System.InvalidCastException: Specified cast is not valid.
我试着投了计算机[“页”]这样的:
if ((long) ViewData["page"] > 1) { ... }
和
long page = (long) ViewData["page"];
if (page > 1) { ... }
他们每个人都将在对方(但不能同时)一个视图抛出一个异常铸造。
Index.aspx和More.aspx之间的一个区别是Index.aspx使用母版页,而More.aspx则没有。
有没有人有任何建议可能是错的?如果我需要提供更多详细信息,请让我知道。顺便说一句,我是C#和ASP.NET MVC的新手。
答
这条线:
ViewData["page"] = 0;
在设置值是一个盒装int
。您正试图将其取消装箱到long
。避免这个问题的最简单方法是框的long
入手:
ViewData["page"] = 0L;
...或使用int
为您的页码开始。 (你真的会得到超过int.MaxValue
页?)
重新。页码的类型,可能不是。但是我从Web服务中获得了这个,并且我没有真正控制这个类型。 :( 感谢您的建议,我会尝试一下 – 2010-08-06 07:09:39
你一定是在开玩笑......那是*它*它!干杯! – 2010-08-06 07:11:50