c# - Razor Pages - Foreach 循环遍历列表以获取要在 Razor View 上显示的数据

标签 c# asp.net-core razor-pages asp.net-core-3.0

我无法让数据显示在 Razor View 上。我目前正在获取数据并在 DataAccessLayer.GetData() 函数中填充我的对象。我的对象列表被填充并存储。但是,我的对象列表计数在 Razor View 中为 0,因此它什么也不显示。我是否在 View 中正确地“新建”了我的对象?这是第一次使用 Razor 页面模板,因此它是一个学习曲线。

Razor 页面:

<form method="post" asp-page-handler="GetData">
    <input id="txtSearch" name="search" />
    <button class="btn btn-lg btn-dark" id="btnSubmit" name="Submit" />
</form>


@{ List<ObjectsModel> objects = new List<ObjectsModel>();

    @foreach (var record in objects)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => record.COLUMN1)
            </td>
            <td>
                @Html.DisplayFor(modelItem => record.COLUMN2)
            </td>
            <td>
                @Html.DisplayFor(modelItem => record.COLUMN3)
            </td>
        </tr>
    }
}

页面模型:

 public class ObjectsModel : PageModel
{
    public string COLUMN1 { get; set; }
    public string COLUMN2 { get; set; }
    public string COLUMN3 { get; set; }

    public void OnGet()
    {

    }

    public void OnPostGetData(string search)
    {

        List<ObjectsModel> objects = new List<ObjectsModel>();

        DataAccessLayer.GetData(search, out objects);
        return;
    }
}

数据访问层:

public class DataAccessLayer
    {
        public static bool GetData(string ID, out List<ObjectsModel> objects)
        {
            string connectionString = "";
            objects = new List<ObjectsModel>();

            try
            {
                SqlConnection connection = new SqlConnection(connectionString);
                connection.Open();

                SqlCommand command = connection.CreateCommand();

                command.CommandType = System.Data.CommandType.Text;

                command.CommandText = @"SELECT top 50 COLUMN1, COLUMN2, COLUMN3
                                         "FROM Table";


                SqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    ObjectsModel item = new ObjectsModel();                
                    item.COLUMN1 = reader.GetValue(0).ToString().Trim();
                    item.COLUMN2 = reader.GetValue(1).ToString().Trim();
                    item.COLUMN3 = reader.GetValue(2).ToString().Trim();

                    objects.Add(item);
                }

                    reader.Close();
                    reader = null;
                    command = null;         
                    connection.Close();
                    connection = null;

                    return true;
            }
            catch (Exception exc)
            {
                exc.ToString();
                return false;
            }
        }
    }

最佳答案

修改这段代码

@{ List<ObjectsModel> objects = new List<ObjectsModel>();

    @foreach (var record in objects)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => record.COLUMN1)
            </td>
            <td>
                @Html.DisplayFor(modelItem => record.COLUMN2)
            </td>
            <td>
                @Html.DisplayFor(modelItem => record.COLUMN3)
            </td>
        </tr>
    }
}

对此

public class ObjectsModel : PageModel
{
    public string COLUMN1 { get; set; }
    public string COLUMN2 { get; set; }
    public string COLUMN3 { get; set; }

    public List<ObjectsModel> objects{get; set;}

    public void OnGet()
    {

    }

    public void OnPostGetData(string search)
    {

        DataAccessLayer.GetData(search, out objects);
        return;
    }
}



@{ 

    @foreach (var record in Model.objects)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => record.COLUMN1)
            </td>
            <td>
                @Html.DisplayFor(modelItem => record.COLUMN2)
            </td>
            <td>
                @Html.DisplayFor(modelItem => record.COLUMN3)
            </td>
        </tr>
    }
}

关于c# - Razor Pages - Foreach 循环遍历列表以获取要在 Razor View 上显示的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58998293/

相关文章:

c# - 当字符串长度超过 32768 个字符时,Azure 存储异常

c# - 在 Razor 页面之间传递模型数据

c# - 使用 incell 编辑在网格中解析 Kendo 日期,ASP.NET MVC

c# - 如何过滤数据表?

c# - 更新面板、确认按钮和更新进度似乎无法协同工作

c# - 以编程方式生成的 PowerPoint 演示文稿破坏了 PowerPoint 2013

c# - Kendo MVC Core - 网格 - 无法通过路线获取数据 - 400 错误请求

asp.net-core - 如何在 ASP.NET Core 3.1 中实现自定义 ValidateAntiforgeryTokenAuthorizationFilter

c# - 从 Bootstrap 模式弹出窗口提交数据

c# - Razor Page - 当存储在 html 数据属性中时,C# 代码中带有空格的字符串会被缩短