簡體   English   中英

你調用的對象是空的

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM