0

概要: 不足しているデータを報告するアプリケーション機能を構築しています。レコードが欠落しているさまざまな名前がドロップダウンに入力されます。ただし、その特定の名前 (または任意の名前) で完全なレポートを検索し始めると、アプリのクラッシュと共に次のエラーが発生します。

エラー: NullReferenceException はユーザー コードによって処理されませんでした。
オブジェクト参照がオブジェクト インスタンスに設定されていません。

私の見解(エラーがどこにあるか):

見る:

@using (Html.BeginForm("Index", "Home", "POST"))
{
    <div class="searchField">
       <input type="text" class="search-query" name="heatSearch" placeholder="Search">
        <button class="btn btn-success" type="submit">Search</button>
    </div>
    <br />
   <select>
    @foreach (var item in (ViewData["MissingChem"] as IEnumerable<string>))
    {
        <option> @item </option>
    }

   </select>
} 

コントローラ:

public ActionResult Index()
        {
            Session["InitialLoad"] = "Yes";
            HomeModel H = new HomeModel();
            ViewData["MissingChem"] = H.MissingQueryResults();
            return View();
        } 

モデル:

    public List<string> MissingQueryResults()
        {
            //HomeModel Tolerances = new HomeModel();
            List<String> nameList = new List<String>();

            SqlCommand missingQuery = new SqlCommand("SELECT heatname FROM dbo.chemistrytable WHERE heatname NOT IN (SELECT heatname FROM dbo.chemistrytable WHERE sampletype = 'AVE') AND analysistime between '01-01-2013' and Current_Timestamp AND heatname LIKE '[a,b,c,d]%' Order by heatname");// + heatName + "'");
            SqlCommand mainquery = new SqlCommand("SELECT analysisv

alue.analysisid, heatname, analysistime, sampletype, grade, productid, element, value FROM dbo.AnalysisValue INNER JOIN dbo.ChemistryAnalysis ON dbo.AnalysisValue.AnalysisID = dbo.ChemistryAnalysis.AnalysisID Where heatname = '" + "' Order By analysisvalue.analysisid Asc, element");

        using (SqlConnection conn = new SqlConnection(strSQLconnection))
        {
            missingQuery.CommandTimeout = 20000;//Dateadd(day, -1, Current_Timestamp)
            conn.Open();
            missingQuery.Connection = new SqlConnection(strSQLconnection);
            missingQuery.Connection.Open();

            using (var reader = missingQuery.ExecuteReader())
            {
                int fieldCount = reader.FieldCount;

                while (reader.Read())
                {
                    for (int i = 0; i < fieldCount; i++)
                    {
                        nameList.Add(reader[i].ToString().Trim());

                    }

                }
            }return nameList;
        }
    }

ありとあらゆる助けをいただければ幸いです。

4

1 に答える 1