2010-07-27 5 views
3

В этой строке кодаобъекта не задана ссылка на экземпляр объекта

<% var tmp = int.Parse(ViewData["numOfGroups"].ToString()); %> 

У меня ошибка: Object reference not set to an instance of an object. Как правильно преобразовать

ViewData["numOfGroups"] - int?

+0

Возможный дубликат [Что такое исключение NullReferenceException и как его исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it) –

ответ

5

Вы должны убедиться, что ваше действие контроллера устанавливает эту переменную:

public ActionResult Index() 
{ 
    ViewData["numOfGroups"] = "15"; 
    return View(); 
} 

После того, как вы сделали это, вы больше не должны получить NullReferenceException и ваш код должен работать.

Конечно, как я уже писал несколько раз здесь, вам следует предпочесть строго типизированный вид вместо ViewData. Также вы должны соответствующим образом ввести свойства модели. На рассмотрение не следует разбирать строки. Итак:

public ActionResult Index() 
{ 
    var model = new MyModel 
    { 
     NumOfGroups = 15 
    }; 
    return View(model); 
} 

А на ваш взгляд:

<% var tmp = Model.NumOfGroups; %> 

Кстати это также следует избегать, так как у меня есть ощущение, что вы объявляем переменные вашей точки зрения это означает, что у вас есть намерение используя их. Представления не предназначены для объявления переменных и написания кода C#. Это разметка.

0

Похоже, ViewData["numOfGroups"] - null. Вполне возможно, что проблема не в самом преобразовании, а в ViewData["numOfGroups"].ToString().

1

Если ошибка связана с преобразованием ViewData["numOfGroups"] в int, вы получите FormatException. Убедитесь, что вы действительно передаете данные в представление и что он содержит ключ numOfGroups.

0

Поскольку словарь ViewData содержит <string, object> вы должны сделать распаковку по значению:

int tmp = (int)ViewData["numOfGroups"]; 

но проверить, если объект является нулевым первым или окружать TRY/улов, есть ли шанс, что преобразование не будет работать .. ... или использовать TryParse(), который возвращает bool, если преобразование выполнено успешно или нет.

+0

ваш код не будет компилироваться. Я предполагаю, что вы имели в виду (int) ViewData ["numOfGroups"], который, тем не менее, по-прежнему будет исключением null ref. Наиболее правдоподобное исключение null ref в опубликованном коде OP заключается в том, что ViewData ["NoOfGRoups"] имеет значение NULL. –

+0

отредактирован, спасибо за наблюдение .... – TheBoyan

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