的一個實例。在這行代碼對象引用不設置爲一個對象
<% var tmp = int.Parse(ViewData["numOfGroups"].ToString()); %>
我有錯誤:Object reference not set to an instance of an object
。如何正確轉換
ViewData["numOfGroups"]
到int
?
的一個實例。在這行代碼對象引用不設置爲一個對象
<% var tmp = int.Parse(ViewData["numOfGroups"].ToString()); %>
我有錯誤:Object reference not set to an instance of an object
。如何正確轉換
ViewData["numOfGroups"]
到int
?
你應該首先確保你的控制器動作設置此變量:
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#代碼。他們是標記。
似乎ViewData["numOfGroups"]
爲空。這個問題很可能不是轉換本身,而是在ViewData["numOfGroups"].ToString()
。
如果錯誤與將ViewData["numOfGroups"]
轉換爲int相關,那麼您將得到FormatException。檢查你是否真的將數據傳遞給視圖,並且它包含numOfGroups
鍵。
由於ViewData字典包含<string, object>
你要做的拆箱的價值:
int tmp = (int)ViewData["numOfGroups"];
,但檢查的對象是空的第一或環繞通過try/catch語句,如果有任何機會轉換將不會工作。 。 ...或使用TryParse()
,如果轉換成功或不成功,則返回bool。
你的代碼不會編譯我猜你的意思是(int)ViewData [「numOfGroups」],但是它仍然是一個空引用異常。發佈的代碼OP中最可信的空引用異常是ViewData [「NoOfGRoups」]爲空。 – 2010-07-27 09:51:07
編輯,感謝您的觀察.... – TheBoyan 2010-07-27 12:00:16
可能的重複[什麼是NullReferenceException,以及如何解決它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix -it) – 2017-01-11 10:26:20