[英]Access variable of one controller from another view in ASP.NET Core MVC
I am trying build a project while self learning but have been stuck in one place.我正在尝试在自学的同时构建一个项目,但一直停留在一个地方。
I have this class Roles
:我有这个 class
Roles
:
namespace IC2021.Models
{
public partial class Roles
{
public Roles()
{
Staffs = new HashSet<Staffs>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Staffs> Staffs { get; set; }
}
}
And another called Staffs
:另一个叫
Staffs
:
namespace IC2021.Models
{
public partial class Staffs
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Location { get; set; }
public int? RoleId { get; set; }
public string Archived { get; set; }
public virtual Roles Role { get; set; }
}
}
This is my RolesController
:这是我的
RolesController
:
namespace IC2021.Controllers
{
public class RolesController : Controller
{
private readonly ICOctober2021Context _context;
public RolesController(ICOctober2021Context context)
{
_context = context;
}
// GET: Roles
public async Task<IActionResult> Index()
{
return View(await _context.Roles.ToListAsync());
}
public async Task<IActionResult> RolesWithStaffs()
{
var iCOctober2021Context = _context.Roles.Include(s => s.Staffs);
return View(await iCOctober2021Context.ToListAsync());
}
}
}
And finally I'm trying to view it from RolesWithStaffs
:最后我试图从
RolesWithStaffs
查看它:
<!-- model declaration -->
@model IEnumerable<IC2021.Models.Roles>
@{
ViewData["Title"] = "RolesWithViewController";
}
<h1>RolesWithViewController</h1>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
<tr>
<th>
Role
</th>
<th>
Staff Name
</th>
<th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.Staffs)
</td>
@*<td>
<a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-action="Details" asp-route-id="@item.Id">Details</a> |
<a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
</td>*@
</tr>
}
</tbody>
</table>
So here in the view when I tried to access from Staffs
, I am not able (for example item.Staffs.FirstName
, or anything else from Staffs
).因此,在视图中,当我尝试从
Staffs
访问时,我无法访问(例如item.Staffs.FirstName
或来自Staffs
的任何其他内容)。 Whereas I can do it other way, I mean from staffs view I can access Roles.Name
or Id
).虽然我可以用其他方式做到这一点,但我的意思是从员工的角度来看我可以访问
Roles.Name
或Id
)。
Can anyone please help me?谁能帮帮我吗? Any help will be highly appreciated.
任何帮助将不胜感激。
Your view model looks quite unusual, IMHO you can try this您的视图 model 看起来很不寻常,恕我直言,您可以试试这个
public async Task<IActionResult> RolesWithStaffs()
{
var model= await _context.Set<Staffs>().Include(s => s.Role).ToListAsync();
return View(model);
}
and view并查看
<table class="table">
<thead>
<tr>
<th>
First Name
</th>
<th>
Last Name
</th>
<th>
Role
</th>
<th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(item=> item.FirstName)
</td>
<td>
@Html.DisplayFor(item=> item.LastName)
</td>
<td>
@Html.DisplayFor(item => item.Role.Name)
</td>
<td>
<a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-action="Details" asp-route-id="@item.Id">Details</a> |
<a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
</td>
</tr>
}
</tbody>
</table>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.