entity-framework - 有没有什么方法可以让 Controller、ViewModel 和 View 没有 Model?仅用于索引视图
问题描述
我想做的是一个参数化的报告,我很想为此使用 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>
解决方案
我最终创建了一个真实的表/模型,然后它与视图模型一起工作得很好。谢谢。
推荐阅读
- html - Django从相关下拉列表中显示多个值
- vb.net - 如何修复 VB.NET 错误“参数无效”?
- ios - SwiftUI 中的页面浏览图片库
- javascript - 处理 AJAX 请求时使用 Observables 的原因
- html - 背景图像滚动功能不起作用
- python - Plotly:如何显示除边际直方图计数之外的其他值?
- flutter - 滚动不适用于 SingleChildScrollView
- ios - 如何在单个项目中处理多个环境支持和不同目标?
- react-native - React Native:Android 9 上 TextAlign 'justify' 的奇怪行为
- docker - 使用 ansible 停止基于公共端口的 docker 容器