簡體   English   中英

如何通過視圖將參數傳遞給控制器​​?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM