有没有办法让Controller,ViewModel和View不带模型?仅用于索引视图

时间:2019-02-10 16:41:17

标签: entity-framework model-view-controller asp.net-mvc-5

我想要做的是参数化报告,我很想为此使用SSRS或其他精美工具,但由于目前我真的不想弄乱公司服务器并且我不愿意,所以这有点危险。有很多时间另外,如果它是一种工具,它应该是一种免费且轻便的工具,而我现在还没有找到它。

因此,我的想法是使用Index创建一个简单的控制器,该控制器将根据参数将列表返回到View,并且View将使用ViewModel作为模型,然后用户可以将该列表导出为CSV或PDF,问题是:MVC问一个真正的数据库模型来完成脚手架,那怎么办呢?

控制器(我在这里称为存储过程)

public class ReporteEntregasPresentacionController : Controller
{
    private EntregaMedicamentosEntities db = new EntregaMedicamentosEntities();

    public ActionResult Index(DateTime DateFrom, DateTime DateTo)
    {
        ReporteEntregasPresentacionViewModel rep = new ReporteEntregasPresentacionViewModel();

        string sqlQuery = "[dbo].[spEntregasPorPresentacion] ({0},{1})";
        Object[] parameters = { DateFrom, DateTo };            
        rep.LstEntregasPresentacionViewModel = db.Database.SqlQuery<ItemEntregasPresentacionViewModel>(sqlQuery, parameters).ToList();

        return View(rep);
    }
}

ViewModel

public class ReporteEntregasPresentacionViewModel
{
    public int index;
    public List<ItemEntregasPresentacionViewModel> LstEntregasPresentacionViewModel;
}

public class ItemEntregasPresentacionViewModel    {

    public string idProducto { get; set; }
    public string Descripcion { get; set; }
    public string EntregasTotales { get; set; }
}

我现在没有视图,但是我应该是这样的:

@model EntregaMedicamentos.Models.ReporteEntregasPresentacionViewModel
<link href="~/Content/css/styles.css" rel="stylesheet" />
@{
    ViewBag.Title = "ReporteEntregasPresentacion";
}

<h2>ReporteEntregasPresentacion</h2>

@using (Html.BeginForm("Index", "Entrega", FormMethod.Post))
{
    <div class="card text-white bg-secondary">
        <h5 class="card-header">Search</h5>
        <div class="card-body">
            <div class="row">
                <div class="col-md-6">
                    <div class="input-group">
                        @Html.TextBox("DateFrom", ViewBag.currentFilter1 as DateTime?, new { @class = "form-control", placeholder = "Desde fecha", @readonly = "true", type = "datetime" })
                        @Html.TextBox("DateTo", ViewBag.currentFilter2 as DateTime?, new { @class = "form-control", placeholder = "Hasta fecha", @readonly = "true", type = "datetime" })
                        <button id="Submit4" type="submit" style='font-size:22px ;color:blue'><i class='fas fa-search'></i></button>
                    </div>
                </div>
            </div>
        </div>
    </div>
}

<br>
<table class="table table-striped ">
    <tr class="table-primary">
        <th>
            Código
        </th>
        <th>
            Producto
        </th>
        <th>
            Entregas Totales
        </th>
    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.idProducto)
            </td>

            <td>
                @Html.DisplayFor(modelItem => item.Descripcion)
            </td>

            <td>
                @Html.DisplayFor(modelItem => item.Valor)
            </td>
        </tr>
    }
</table>

1 个答案:

答案 0 :(得分:0)

我最终创建了一个真实的表/模型,然后在viewmodel上运行良好。谢谢。