[英]How to pass a parameter to controller through view?
我正在嘗試通過視圖將 ICollection 參數傳遞給 TeamMemberController。 我使用 SQL 數據庫和 ASP.NET Core 數據庫存儲在本地。 單擊紅色標記的按鈕時,應該會出現一個包含團隊成員列表的新頁面。 TeamMembers 當前顯示在標記按鈕的左側。 查看按鈕應該發送參數並將我們定向到teamMemberpage但是正如您所看到的,列表似乎是空的
我試過在我的瀏覽器中查看網絡,它給了我這個:
查詢字符串參數(1) :teamMembers: System.Collections.Generic.List`1[BugTracking.Data.Entities.TeamMember]
視頻演示問題https://youtu.be/dJbloxDCeok
代碼:
項目索引視圖
@foreach (var item in Model) {
<a asp-action="ShowTeamMembers"
asp-controller="TeamMember"
asp-route-teamMembers="@item.TeamMembers" class="btn btn-
secondary">view</a>
}
團隊成員控制器
public class TeamMemberController : Controller
{
private readonly DatabaseContext _context;
public TeamMemberController(DatabaseContext context)
{
_context = context;
}
// GET: TeamMembers
public async Task<IActionResult> Index()
{
return View(await _context.TeamMembers.ToListAsync());
}
public IActionResult ShowTeamMembers(ICollection<TeamMember> teamMembers)
{
return View(nameof(Index), teamMembers);
}
}
錨標記將生成一個指向給定控制器/動作的 url 鏈接。 因此,它只能包含可以包含在鏈接的 url 中的參數。 所以你不能在 url 上傳遞一個對象。
嘗試傳遞團隊成員的 ID
項目索引視圖
@foreach (var item in Model) {
<a asp-action="ShowTeamMembers"
asp-controller="TeamMember"
asp-route-Id="@item.TeamMembers.ID" class="btn btn-
secondary">view</a>
}
團隊成員控制器
public IActionResult ShowTeamMembers(int Id)
{
var team = _context.TeamMembers.Where(team => team.ID == Id).FirstOrDefault()
return View(nameof(Index), team);
}
我通過發送項目本身的 id 解決了這個問題,而不是嘗試發送列表。 然后我可以從 TeamMemberController 處理該對象並將列表綁定到一個變量。
代碼:
項目索引視圖
<a asp-action="ShowTeamMembers"
asp-controller="TeamMember"
asp-route-Id="@item.Id" class="btn btn-secondary">view</a>
團隊成員控制器
public IActionResult ShowTeamMembers(Guid Id)
{
Project? project = _context.Projects.Include(p => p.TeamMembers).Where(p => p.Id == Id).FirstOrDefault();
List<TeamMember> team = project?.TeamMembers ?? new();
return View(nameof(Index), team);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.