我正在使用存储过程(没有实体框架)开发ASP MVC项目。
在公式中设置数据后,我想只显示最后一条记录,而不是从我的数据库中获取所有数据。
我知道我可以编写另一种只选择最后一条记录的方法,但我想知道是否有一种解决方案可以从视图中检索它。
这就是我的尝试:
@for (var i = 0; i < 1; i++) {
@foreach (var item in Model)
{
<tr>
<th>
@Html.DisplayNameFor(model => model.FirstName)
</th>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.Address)
</th>
<td>
@Html.DisplayFor(modelItem => item.Address)
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.Email)
</th>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.Phone)
</th>
<td>
@Html.DisplayFor(modelItem => item.Phone)
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.Date)
</th>
<td>
@Html.DisplayFor(modelItem => item.Date.Date)
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.Time)
</th>
<td>
@Html.DisplayFor(modelItem => item.Time)
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.Nbre_P)
</th>
<td>
@Html.DisplayFor(modelItem => item.Nbre_P)
</td>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.Items)
</th>
<td>
@Html.DisplayFor(modelItem => item.Items)
</td>
</tr>
} }
Model Bestellung.cs:
public class Bestellung
{
public int BestellungId { get; set; }
[Required]
public DateTime Date { get; set; }
[Required]
public string Time { get; set; }
public int Nbre_P { get; set; }
public string Items { get; set; }
[Display(Name = "Phone Number")]
[DataType(DataType.PhoneNumber)]
[Required(ErrorMessage = "Phone is required.")]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Entered phone format is not valid.")]
public String Phone { get; set; }
[Display(Name = "Email")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
[Required(ErrorMessage = "Email is required.")]
[DataType(DataType.EmailAddress)]
[StringLength(30)]
public string Email { get; set; }
[Display(Name = "First Name")]
[Required(ErrorMessage = "First name is required.")]
[StringLength(30)]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
[Required(ErrorMessage = "Last name is required.")]
[StringLength(30)]
public string LastName { get; set; }
[Display(Name = "Address")]
[Required(ErrorMessage = "Address is required.")]
[StringLength(30)]
public string Address { get; set; }
}
答案 0 :(得分:1)
一种可能的解决方案是改变:
@foreach (var item in Model)
为:
@foreach (var item in Model.Reverse().Take(1))
这仍保留循环结构(即foreach
),但确保它只处理原始Model
中的最后一项。
答案 1 :(得分:0)
考虑到Model
属于IEnumerable<T>
类型,不确定为什么不能使用返回最后一个元素的LINQ Last()
方法
答案 2 :(得分:0)
你不想这样做。
如果你在视图中过滤它,这是可能的,但我不推荐它,你可以加载整个列表模型项。你为什么要这么做?
控制器的任务是过滤您的数据并仅发送所需的项目。 在控制器调用中
Model.LastOrDefault();
答案 3 :(得分:0)
如果只想显示最后一条记录,而又不想从我的数据库中获取所有数据。 您可以使用此:
在控制器中:
var Bestellung = db.Bestellungs.OrderByDescending(p => p.BestellungId ).FirstOrDefault();
将为您提供Bestellungs的最新唱片
答案 4 :(得分:-1)
试试这个。不需要迭代任何循环
s <= func(n);
答案 5 :(得分:-3)
你的模型应该是modelobject的列表,而不仅仅是模型 最好将对象存储在像
这样的对象列表中 class viewmodel
{
public list<yourclassname> propertyname;
}
并在视图页面中使用此viewmodel类
@foreach(var item in Model.PropertyName.lastordefault())