c# - 如何使用相同的控制器但不同的操作将数据从一个视图传递到另一个视图?ASP.Net 和微软图形
问题描述
好的,所以想法是用户单击视图上的下拉选择,点击表单上的提交,将用户选择发送回控制器,并呈现特定于该用户选择的新视图。
这是视图:
<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 方法将获取 user 选项的值并将其传递给具有操作“Index”的控制器:
[HttpPost]
public async Task<ActionResult> Index(string ID)
{
var data = await GraphHelper.GetChannelsAsync(ID);
return View("Channels", data);
}
现在它使用下面的 html 渲染了一个“Channels”视图:
<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 创建一个选项卡。我会将这个带有“channelId”值的“channelList”表单提交回我的控制器。
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))
{
< ... >
}
在这两种情况下,您SubmitChannelId
在 Controller 中的操作都应使用[HttpPost]
提交的输入参数进行修饰并接受channelId
(相应地更改参数类型):
[HttpPost]
public async Task<ActionResult> SubmitChannelId(int channelId)
{
< ... >
}
推荐阅读
- java - 运行 JUnit 测试有效,但 Gradle 测试无效。怎么修?
- c# - 如何在 Windows 注册表中输入十六进制值作为 DWORD?
- c# - 混合泛型、非泛型和基类设计问题
- c++ - C++ 预处理器:稍后推迟宏调用
- python - 从 woocommerce 在线商店刮取产品尺寸的问题
- amazon-web-services - 有没有办法以编程方式控制 Alexa?
- css - 条纹元素和 Bootstrap 4.1 css 冲突
- javascript - FindOneAndUpdate 对我来说无法正常工作
- sql - SELECT 语句在 SQL Management Studio 但不是 VB.net 中执行良好
- node.js - 分析流数据的节点脚本