System.InvalidCastException:在ASP.NET MVC局部视图

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页?)

+0

重新。页码的类型,可能不是。但是我从Web服务中获得了这个,并且我没有真正控制这个类型。 :( 感谢您的建议,我会尝试一下 – 2010-08-06 07:09:39

+0

你一定是在开玩笑......那是*它*它!干杯! – 2010-08-06 07:11:50