为了账号安全,请及时绑定邮箱和手机立即绑定

ASP.NET Core 2.1 [FromQuery] 未获取参数

ASP.NET Core 2.1 [FromQuery] 未获取参数

C#
慕尼黑5688855 2021-10-09 14:01:01
你应该定义 int[]activityTimes 作为一个全局变量,把它放在外面public partial class Form1 : Form{    string activity;    int activityTime;    bool enteredInt = false;    //initializes variables used to store activities    string activity1 = "";    string activity2 = "";    string activity3 = "";    string activity4 = "";    string activity5 = "";    //intitializes variables used to store activity times    int activityTime1 = 0;    int activityTime2 = 0;    int activityTime3 = 0;    int activityTime4 = 0;    int activityTime5 = 0;    int i;    string[] activities=new string[length];    public Form1()    {        InitializeComponent();    }}
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

选项 1)

尝试将您的[HttpGet]属性更改为


[HttpGet("GenerateCode/{email}]

/[action]如果这样做,您将需要从控制器的 Route 属性中删除,所以它只是


[Route("api/[controller]")]

选项2)

或者,在Startup.cs变化app.UseMvc();到


app.UseMvc(routes =>

{

    routes.MapRoute(

        name: "default",

        template: "api/{controller=Home}/{action=Index}/{id?}");

});

并[Route("api/[controller]/[action]")]从控制器属性中删除并确保您也没有该[ApiController]属性


此解决方案将更改您整个项目的路由,因此您必须对所有其他 API 控制器执行相同操作


选项 3)

第三种解决方案是更改[Route("api/[controller]/[action]")]为


[Route("api/[controller]/[action]/{id?}")]

我已经测试了所有 3 个解决方案,它们都带有 URL {{url}}/api/ControllerName/ActionName?email=test


查看完整回答
反对 回复 2021-10-09
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

回答有点晚,但可能对其他人有帮助


选项 4


您可以在 [FromQuery] 属性中显式命名查询字符串参数名称


[HttpGet]

[Authorize(Roles = "admin")]

public async Task<IActionResult> GenerateCode([FromQuery(Name="email")] string email)

{


}


查看完整回答
反对 回复 2021-10-09
  • 2 回答
  • 0 关注
  • 453 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信