【发布时间】:2019-07-04 05:49:20
【问题描述】:
我想要做的是一个参数化的报告,我很想为此使用 SSRS 或其他花哨的工具,但此时它有点危险,因为我真的不想弄乱公司服务器而且我不想有很多时间;另外,如果它是一个工具,它应该是一个免费且轻便的工具,我现在还没有找到。
所以,我的想法是制作一个带有索引的简单控制器,它将根据参数返回一个列表到视图,视图将使用该 ViewModel 作为模型,然后用户可以将该列表导出为 CSV 或 PDF,问题是:MVC是要求一个真正的db模型来完成脚手架,那该怎么做呢?
控制器(这里我称之为存储过程)
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);
}
}
视图模型:
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>
【问题讨论】:
-
然后只需创建模型,映射所需的属性并将其返回到视图
-
嗯,好点,所以我可以简单地添加一个表格和真实模型,而永远不会真正使用它,我会尝试的。
-
您可以使用 ReporteEntregasPresentacionViewModel 作为模型。您那里的示例应该可以工作。它不工作吗?
标签: entity-framework model-view-controller asp.net-mvc-5