我在一个项目中使用 ASP.NET Core 2.1.0,我想向默认脚手架
Index.cshtml
页面添加一个额外的属性。
这是我的实体 - 请建议:
public class Role
{
public int RoleId { get; set; }
public string RoleName { get; set; }
public ICollection<UserRole> UserRole { get; set; }
}
public class User
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string UserName { get; set; }
public string Password { get; set; }
public string MobileNumber { get; set; }
public string Email { get; set; }
public ICollection<UserRole> UserRole { get; set; }
}
public class UserRole
{
public int Id { get; set; }
public string UserName { get; set; }
public int RoleId { get; set; }
[ForeignKey("RoleId")]
public Role Role { get; set; }
[ForeignKey("UserName")]
public User User { get; set; }
}
现在,默认脚手架
Index.cshtml
显示RoleID
和UserName
,因为我想再添加一列,即RoleName
,可在Role entity
找到。
列表应该是
RoleID, RoleName, UserName
这是我的脚手架页面模型。
public class IndexModel : PageModel
{
private readonly Test.Models.TestContext _context;
public IndexModel(Test.Models.TestContext context)
{
_context = context;
}
public IList<UserRole> UserRole { get;set; }
public async Task OnGetAsync()
{
UserRole = await _context.UserRole
.Include(u => u.Role)
.Include(u => u.User).ToListAsync();
}
}
请帮助我,不要打扰任何其他页面,例如
Edit, Detail, Delete.
更新:
Index.cshtml
中的标记:
@page
@model Test.Pages.UserRoles.IndexModel
@{
ViewData["Title"] = "Index";
}
<h2>Index</h2>
<p>
<a asp-page="Create">Create New</a>
</p>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.UserRole[0].Role)
</th>
<th>
@Html.DisplayNameFor(model => model.UserRole[0].User)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.UserRole)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Role.RoleId)
</td>
<td>
@Html.DisplayFor(modelItem => item.User.UserName)
</td>
<td>
<a asp-page="./Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-page="./Details" asp-route-id="@item.Id">Details</a> |
<a asp-page="./Delete" asp-route-id="@item.Id">Delete</a>
</td>
</tr>
}
</tbody>
</table>
您可以尝试在您的
@item.Role.RoleName
中使用
index.chtml
注意
我建议您使用不同的
ViewModel
类来承载每个 view
的数据,而不是 ModelContext,因为 ModelContext 负责将 DB
数据属性获取到映射器数据库表模式。
ViewModel
负责承载显示数据。
这是一个链接希望可以帮助你