Reputation: 1195
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
?
Upvotes: 3
Views: 9710
Reputation: 6890
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.
Upvotes: 0
Reputation: 1038810
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.
Upvotes: 5
Reputation: 30883
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.
Upvotes: 1
Reputation: 16577
Seems ViewData["numOfGroups"]
is null. It is quite possible that problem is not in conversion itself but in ViewData["numOfGroups"].ToString()
.
Upvotes: 0