繁体   English   中英

System.InvalidCastException:在ASP.NET MVC部分视图中

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

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