首页 > 解决方案 > 在asp MVC View中显示非实体数据的最佳方法是什么

问题描述

我在带有 c# 的 asp MVC 控制器中有一个非实体自定义和原始 SQL 查询。我想将此数据发送到 asp MVC razor 视图并以表格格式显示它们及其相应的列标题。如何获取标题(自定义查询可以涉及任意数量的表)并以表格格式显示数据?我很感激你的帮助。

public class QueryScriptController : Controller
    {

        private EntitiesContext db = new EntitiesContext();



        public ActionResult CreateQueryScript(string SqlQueryString )
        {


          try
                {

                    var ResultList= db.Database.SqlQuery<string>(SqlQueryString).ToList();
                    return   View(ResultList);
                }

                catch
                {
                    return View();
                }

        }

}

标签: sqlasp.net-mvclinqrazor

解决方案


在您的控制器中,将数据传递给如下所示的 Viewbag 并将该 Viewbag 传递给剃刀视图。

    public class QueryScriptController : Controller
    {

        private EntitiesContext db = new EntitiesContext();



        public ActionResult CreateQueryScript(string SqlQueryString )
        {


          try
                {

                    var ResultList= db.Database.SqlQuery<string> 
                    (SqlQueryString).ToList();
                  ViewBag.data =ResultList;
                    return   View();
                }

                catch
                {
                    return View();
                }

        }

}

在您的 razor 页面中,调用如下所示的 Viewbag 并调用您从查询中获得的数据对象。

@{
    var data = ViewBag.data;
}
using somemodel;
<!DOCTYPE html>
<html style="position: absolute; width: 100%; height: 100%">
<head>
    <meta name="viewport" content="width=device-width" />
    <link href="~/Content/bootstrap.min.css" rel="stylesheet" />  
    <link href="https://fonts.googleapis.com/css?family=Fira+Sans" rel="stylesheet">
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <title>PaySlip</title>
</head>
<body >
   <div class="col-lg-6">
                        <h5 align="center" style="text-decoration: underline;">Results</h5>
                        <table className="table-bordered table-striped">

                            <thead>

                            <tr>

                                <th style="width: 60%">Column 1</th>
                                <th style="width: 30%">Column 2</th>
                            </tr>
                            </thead>
                            <tbody>
                            @foreach (var item in @data)
                            {
                                <tr >

                                    <td style="width: 60%">@item.object1</td>
                                    <td style="width: 30%">@item.object2</td>

                                </tr>
                            }

                            </tbody>


                        </table>
                    </div>




</body>
</html>

推荐阅读