[英]Object reference not set to an instance of an object
在這行代碼中
<% 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"]
轉換為int有關,那么您將獲得FormatException 。 檢查您是否確實將數據傳遞給視圖,並且它包含numOfGroups
鍵。
似乎ViewData["numOfGroups"]
為空。 問題很可能不在於轉換本身,而在於ViewData["numOfGroups"].ToString()
。
由於ViewData字典包含<string, object>
您必須對值進行拆箱:
int tmp = (int)ViewData["numOfGroups"];
但是,如果轉換無法正常工作,請檢查對象是否為空,或者通過try / catch進行環繞... ...或者如果轉換成功,則使用返回bool的TryParse()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.