簡體   English   中英

如何使用相同的控制器但不同的動作將數據從一個視圖傳遞到另一個視圖? ASP.Net 和 Microsoft Graph

[英]How do you pass data from one view to another using the same controller but different actions? ASP.Net & Microsoft Graph

好的,所以這個想法是用戶點擊視圖上的下拉選擇,點擊表單上的提交,將用戶選擇發送回控制器,並呈現特定於該用戶選擇的新視圖。

這是視圖:

<form method="post">
    <label for="teamList">First choose a team:</label>
    <select id="teamList" name="ID">
        @foreach (var item in Model)
        {
            <option value=@item.Id>@item.DisplayName</option>
        }
    </select><br />
    <input type="submit" value="Get channels">
</form>

表單上的 post 方法將獲取用戶選項的值並將其傳遞給具有操作“索引”的控制器:

[HttpPost]
    public async Task<ActionResult> Index(string ID)
    {
        var data = await GraphHelper.GetChannelsAsync(ID);

        return View("Channels", data);

    }

現在它確實使用以下 html 呈現“頻道”視圖:

<form method="post">
    <label for="channelList">Now choose a channel:</label>
    <select id="channelList" name="channelId">
        @foreach (var item in Model)
        {
            <option value=@item.Id>@item.DisplayName</option>
        }
    </select><br />
    <input type="submit" value="Create tabs">
</form>

現在,這是我需要幫助的地方。 我需要再次提交這個 channelList 表單以使用 Microsoft Graph API 創建一個選項卡。 我會將此“channelList”表單提交回帶有“channelId”值的控制器。

public async Task<ActionResult> SubmitChannelId()
        {
            //Take channelID and pass it to microsoft.graphApi function call here
            return View(//with returned function call response);
        }

如果我使用相同的控制器,如何在此“頻道”視圖上執行 [HttpPost] 提交請求? 這可能與操作或 actionLinks 有關,但我已經閱讀了該文檔並且無法理解它。 我可以得到一些幫助嗎? 謝謝!

快速解決方案是只在表單元素上使用 Url 助手:

<form method="post" action="@Url.Action("MyAction", "MyController")" >

您也可以使用Html.BeginForm來呈現整個表單:

@using(Html.BeginForm("MyAction", "MyController", FormMethod.Post))
{
    < ... >
}

在這兩種情況下,您在 Controller 中的操作SubmitChannelId應該用[HttpPost]修飾並接受提交的channelId輸入參數(相應地更改參數類型):

[HttpPost]
public async Task<ActionResult> SubmitChannelId(int channelId)
{
    < ... >
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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