2010-08-06 4 views
0

В контроллере: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), которое используется в обоих представлениях. Внутри частичного представления он обратился к модели и ViewData. Странная вещь (для меня во всяком случае), что, когда я пытался бросить ViewData [ «страницы»], чтобы долго, я хотел бы получить следующий кастинг исключение для одного из просмотров:

System.InvalidCastException: Specified cast is not valid. 

Я пытался забрасывать ViewData [ «страница»], как следующее:

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.

ответ

2

Эта линия:

ViewData["page"] = 0; 

устанавливает значение, чтобы быть упакованным int. Вы пытаетесь распаковать его на long. Самый простой способ избежать этого боксировать в long, чтобы начать с:

ViewData["page"] = 0L; 

... или использовать int для номера страницы, чтобы начать с. (Вы действительно получите более int.MaxValue страниц?)

+0

Re. тип номера страницы, вероятно, нет. Но я получаю это от веб-службы, и у меня нет контроля над типом. :( Спасибо за предложение. Я попробую. –

+0

Вы, должно быть, шутите .... это * это * это! Приветствия! –

Смежные вопросы