2

谁能告诉我如何在我的视图中循环浏览我的表格?我拥有的行是:disease_id, disease, and remedy.

我的数据库查询

我试图将所有结果放入一个列表中,这样我就可以在视图中循环浏览它们。

        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_id是值还是列?表中有多少条记录?似乎您将“记录”与“来自不同记录的字段值”的集合混淆了。尝试diseaseremedydesease

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而不是string可以隐式而不是强烈地从记录中提取的对象。我相信这是您在上面的代码中遇到的问题。查看以下链接了解更多信息:

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

我希望这有帮助。

于 2013-01-18T22:16:18.343 回答