2

ビューでテーブルをループする方法を誰かに教えてもらえますか? 私が持っている行は次のとおりです。disease_id, disease, and remedy.

私のDBクエリ

すべての結果をリストに入れようとしたので、ビューでそれらをループできます。

        SqlCommand cmd = new SqlCommand("SELECT * FROM disease", m_DBCon);
        m_Reader = cmd.ExecuteReader();

        List<string> record = new List<string>();
        while (m_Reader.Read())
        {
            string s = Convert.ToString(m_Reader[0]);
            record.Add(s);
        }

        ViewBag.Record = record;

私の見解

テーブル内のデータベース レコードをループしたい

@{
    ViewBag.Title = "Dashboard";
    List<string> record = ViewBag.Record;
}

私は空の文字列を取得し続けます。s["disease"], s["remedy"} のようなことをしなければならないと思ったのですが、s は文字列なので、これらのフィールドがすべてあるわけではありません。

    @{
        foreach (string s in record)
        {
            <tr>
              <td>@s</td>
            </tr>
        }
    }

誰かアドバイスをください:)

4

3 に答える 3

4

最初に、DiseaseResult クラスを最初に作成する方がおそらく簡単であることを指摘したいと思います。そのような :

public class DiseaseResult
{
  public int DiseaseId { get; set; }
  public string Disease { get; set; }
  public string Remedy { get; set; }
}

それは物事を少し簡単にします。今、あなたは言うことができます:

public ActionResult Index()
{
    SqlCommand cmd = new SqlCommand("SELECT [disease_id], [disease], [remedy] FROM disease", m_DBCon);
    m_Reader = cmd.ExecuteReader();

    List<DiseaseResult> record = new List<DiseaseResult>();
    while (m_Reader.Read())
    {
        record.Add(new DiseaseResult() { DiseaseId = m_Reader[0], Disease = m_Reader[1], Remedy = m_Reader[2]);
    }

    return View(record);
}

その後、あなたのビューで:

@model List<DiseaseResult>

@foreach(DiseaseResult item in Model)
{
   <div>@item.Disease</div>
}
于 2013-01-18T22:23:54.260 に答える
2

disease_iddiseaseおよびの 3 つの項目remedyは、値ですか、それとも列ですか? テーブルにはいくつのレコードがありdeseaseますか? 「レコード」と「異なるレコードのフィールド値」のコレクションを混同しているようです。試す

string s = Convert.ToString(m_Reader[0]) + "," + Convert.ToString(m_Reader[1]) + "," + Convert.ToString(m_Reader[2]);
于 2013-01-18T22:12:21.477 に答える
1

同じ環境の私のビューコードは次のとおりです。

<% foreach (var item in Model.Item)
{ 
%>
  <tr>
    <td>
      <%: item.Id %>
    </td>
    <td>
      <%: item.Name %>
    </td>
  </tr>
<%
}
%>

文字列の代わりにvarを使用すると、レコードからプルするオブジェクトを強くではなく暗黙的にキャストできます。これは、上記のコードで発生している問題だと思います。詳細については、次のリンクを参照してください。

http://msdn.microsoft.com/en-us/library/bb383973.aspx

これが役立つことを願っています。

于 2013-01-18T22:16:18.343 に答える