1

.Net MVC で DB ストアド プロシージャをクエリするのはこれが初めてです。このプロシージャは、ゼロ行 (ユーザーがデータを入力したことがないことを意味します)、または日付を含む [When] という名前の 1 つの列を含む 1 つの行を返します。

ストアド プロシージャを照会するために次のメソッドを記述した DataHelper クラスがあります。

DataHelper クラス メソッド

public static DataSet Measurements_GetLastMeasurement(Guid UserID)
{
    using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(CONN_STRING))
    {
        conn.Open();
        System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand();
        comm.Connection = conn;
        comm.CommandType = CommandType.StoredProcedure;
        comm.CommandText = "dbo.Measurements_GetLastMeasurement";

        comm.Parameters.AddWithValue("@UserID", UserID);

        System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(comm);
        System.Data.DataSet ds = new DataSet();
        da.Fill(ds);

        return ds;
    }
}

これは非常に簡単で、データをコントローラーに渡し、次に迷子になるビューに渡します。このクエリの結果が日付を返す場合、その日付を画面に出力します。null を返す場合は、null 値を保存して条件を実行します。これは、これを処理するためにコントローラーメソッドの一部を現在どのように設定しているかです。

コントローラーの方法

public ActionResult ChartView()
{  
    var authHelper = new stuff.for.auth();
    var userSession = authHelper.GetUserSession();    

    // get users last data entry date
    DataSet ds = Measurements_GetLastMeasurement(userSession.UserIDNative);
    foreach (DataRow dr in ds.Tables[0].Rows)
    {
        DateTime lastEntryDate = dr["When"];
    }

    ViewData["LastEntryDate"] = lastEntryDate;

    return PartialView();
  } 

次に、ビューから、ViewData["LastEntryDate"] を変数に設定し、それを html に表示するか、Javascript を使用して値が null かどうかを確認して確認することで、データにアクセスできるはずだと思います。説明やガイダンスをいただければ幸いです。

4

1 に答える 1

1
  1. ViewData["LastEntryDate"] = lastEntryDate; を設定するときに変数をスコープ内にするには、変数の foreach ループの外で変数を定義する必要があります。
  2. 変数は DateTime でなければなりませんか? (別名 Nullable<DateTime>) null を有効な値にするため

これを試して:

        DateTime? lastEntryDate = null;
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            lastEntryDate = (DateTime?)dr["When"];
        }

        ViewData["LastEntryDate"] = lastEntryDate;
于 2013-08-27T21:11:51.687 に答える