[英]ASP.NET Core 6 MVC - returning IEnumerable to View
我真的很生疏 ASP.NET MVC 所以 go 对我来说很容易。
您必须想象 UI - 2 个日期选择器和一个提交按钮。 用户选择两个日期。 在提交时,日期用于对后端数据库的查询。 理想情况下,我希望数据显示在同一视图中。 到目前为止,视图看起来像这样:
@model loyalty_rpm_reports.Models.TransactionCriteria
@{
ViewData["Title"] = "Home Page";
}
<div class="text-center">
<h1 class="display-4">RPM - Failed Transactions</h1>
<fieldset>
@using (Html.BeginForm("FailedTransactions", "Transactions", FormMethod.Post))
{
@Html.ValidationSummary()
<p>
@Html.LabelFor(x => x.StartDate)
@Html.EditorFor(x => x.StartDate)
@Html.ValidationMessageFor(x => x.StartDate)
@Html.LabelFor(x => x.EndDate)
@Html.EditorFor(x => x.EndDate)
@Html.ValidationMessageFor(x => x.EndDate)
</p>
<p>
<button type="submit">Retrieve Data!</button>
</p>
}
<!--TO DO results table to go here-->
</fieldset>
</div>
视图使用的 model 是TransactionCriteria
- 这只是为了存储用户从视图输入的日期。 TransactionCriteria
传递给 controller:
using System.ComponentModel.DataAnnotations;
namespace loyalty_rpm_reports.Models
{
public class TransactionCriteria
{
// Both StartDate and EndDate are nullable (DateTime?) otherwise the properties have
// a value by default (01/01/0001) so validation passes
[Display(Name = "Select Start Date")]
[Required]
[DataType(DataType.Date)]
public DateTime? StartDate { get; set; }
[Display(Name = "Select End Date")]
[Required]
[DataType(DataType.Date)]
public DateTime? EndDate { get; set;}
}
}
在提交 controller 操作时调用FailedTransactions
并查询数据库。 我可以成功查询数据库。
我的问题是:如何在我的视图中显示数据? 当然,我可以将包含结果的IEnumerable
传递回视图并显示在表中,但是我必须在所述视图中有第二个@model
,这是不允许的。 再次 - 对此很新,所以 go 简单 - 欢迎提出建议!
[HttpPost]
public IActionResult FailedTransactions(TransactionCriteria transCriteria_)
{
if (!ModelState.IsValid)
{
return View();
}
// return top 10 for now - eventually use transCriteria_.StartDate and
// transCriteria_.EndDate to query database
IEnumerable<ImportHistory> objHistoryList = _db.tblRPM_History.Take(10);
// Can't do the following because I'd have to put another @model in the view
// return view(objHistoryList)
}
您可以尝试使用 ViewData/ViewBag 或创建一个 ViewModel,其中包含您需要的所有数据,然后使用 viewmodel 返回视图
ViewData["SomeKey"]=objHistoryList
; ViewBag.SomeKey=objHistoryList
您可以查看此文档以获取更多详细信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.