gpt4 book ai didi

c# - 在一个 MVC View 中引用多个模型

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:46 26 4
gpt4 key购买 nike

我正在尝试学习 MVC,并且一直在关注使用 MVC 5 (https://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application) 的 Entity Framework 6 Code First 入门,但将其更改为一个小饮料生成器程序(基本上是取出零件并使用我自己的想法去尝试和学习)。

我已经创建了一个 personController、Person(Index、Create、Delete、Details & Edit) View 和一个 person 类,如下所列:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;


namespace DOSTeaDecider.Models
{
public class Person
{
public int ID { get; set; }
[DisplayName("First Name")]
public string FirstName { get; set; }
[DisplayName("Last Name")]
public string LastName { get; set; }
//public byte[] Photo { get; set; }
[DisplayName("Biography")]
public string bio { get; set; }
[DisplayName("Drink Choice")]
public string Drink { get; set; }
[DisplayName("Sugar Amount")]
public int Sugar { get; set; }
[DisplayName("Milk Colour")]
public string MilkColour { get; set; }
[DisplayName("Milk Dosage")]
public string MilkDose { get; set; }

}
}

在我看来,我想根据模型中设置的属性来显示人物,所以我有类似下面的东西,效果很好;但是在我关注的教程中,他们正在使用 PagedList 例如@model PagedList.IPagedList<ContosoUniversity.Models.Student>在 View 中,然后他们可以调用 PagedList.IPagedList 的属性从 View 。我遇到的问题是如果我包含两个 @model View 中的声明它不喜欢它但是如果我删除对人员模型的引用我不能使用人员属性,例如model.LastName如果我删除对 PagedList.IPagedList 的引用,我将无法从中调用属性,例如 Model.PageCount :

@model IEnumerable<DOSTeaDecider.Models.Person>
@*@model PagedList.IPagedList<DOSTeaDecider.Models.Person>*@
@*@using PagedList.Mvc;*@
@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
@Html.ActionLink("Create New", "Create")
</p>
@using (Html.BeginForm("Index", "Person", FormMethod.Get))
{
<p>
Find by name: @Html.TextBox("SearchString", ViewBag.CurrentFilter as string)
<input type="submit" value="Search" />
</p>
}
<table class="table">
<tr>
<th>
@Html.ActionLink("First Name", "Index", new { sortOrder = ViewBag.NameSortParm, currentFilter = ViewBag.CurrentFilter })
@*@Html.DisplayNameFor(model => model.FirstName)*@
</th>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<th>
@Html.DisplayNameFor(model => model.Drink)
</th>
<th>
@Html.DisplayNameFor(model => model.Sugar)
</th>
<th>
@Html.DisplayNameFor(model => model.MilkColour)
</th>
<th>
@Html.DisplayNameFor(model => model.MilkDose)
</th>
<th></th>
</tr>

@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Drink)
</td>
<td>
@Html.DisplayFor(modelItem => item.Sugar)
</td>
<td>
@Html.DisplayFor(modelItem => item.MilkColour)
</td>
<td>
@Html.DisplayFor(modelItem => item.MilkDose)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
@Html.ActionLink("Details", "Details", new { id=item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ID })
</td>
</tr>
}

</table>
<br />
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount

@Html.PagedListPager(Model, page => Url.Action("Index",
new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))

我曾尝试在个人模型中研究和创建对 PagedList 的引用,但到目前为止我的努力都失败了。我想我可能遗漏了一些简单的东西,但我正在学习,这就是为什么我在这里提问,以便有人可以提供建议。

最佳答案

使用 PagedList 作为 View 模型,尝试使用一些显式定义的对象来显示实体的属性:

var sampleObject = Model.First();
@Html.DisplayNameFor(model => sampleObject.FirstName)

@Html.DisplayNameFor(model => new Person().FirstName)

在这种情况下,您可以以标准方式使用 PagedList。

关于c# - 在一个 MVC View 中引用多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31511166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com