[英]System.InvalidCastException: in ASP.NET MVC partial views
在控制器中:
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。 奇怪的是(无论如何对我来说)是,当我尝试将ViewData [“ page”]强制转换为一个很长的时间时,对于其中一个视图,我会得到以下强制转换异常:
System.InvalidCastException: Specified cast is not valid.
我试图将ViewData [“ page”]转换为如下所示:
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;
将值设置为boxed int
。 您正尝试将其拆箱到很long
。 避免这种情况的最简单方法是,将框框从很long
距离开始:
ViewData["page"] = 0L;
...或将int
用作您的页码开头。 (您真的会获得比int.MaxValue
页面更多的int.MaxValue
吗?)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.