简体   繁体   中英

Object reference not set to an instance of an object

In this line of code

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

I have error: Object reference not set to an instance of an object . How correctly convert

ViewData["numOfGroups"] to int ?

You should first make sure that your controller action is setting this variable:

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

Once you've done this you should no longer get a NullReferenceException and your code should work.

Of course as I've already written it multiple times here you should prefer strongly typed view instead of ViewData . Also you should type your model properties accordingly. It is not the responsibility of the view to parse strings. So:

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

And in your view:

<% var tmp = Model.NumOfGroups; %>

By the way this should also be avoided as I have the feeling that you are declaring variables in your view which means that you have the intent of using them. Views are not for declaring variables and writing C# code. They are markup.

If the error was related to converting ViewData["numOfGroups"] to int then you would get FormatException . Check that you are really passing data to the view and that it contains numOfGroups key.

Seems ViewData["numOfGroups"] is null. It is quite possible that problem is not in conversion itself but in ViewData["numOfGroups"].ToString() .

Since ViewData dictionary contains <string, object> you have to do unboxing on the value:

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

but check if the object is null first or surround by try/catch if there's any chance the conversion will not work... ...or use TryParse() that returns bool if the conversion succeeded or not.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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