将.NET查询字符串绑定到属性



我正在使用Microsoft的可验证凭据示例:https://github.com/Azure-Samples/active-directory-verifiable-credentials-dotnet/tree/main/1-asp-net-core-api-idtokenhint

我不想根据测试使用固定的联系人值(请参阅IssuerController.cs(,而是想使用我添加到索引页面的表单中的查询参数(例如,名为"firstname"的输入(。我可以在结果页面URL中看到参数,但我找不到正确设置这些参数的方法。

我在IssuerController.cs中尝试了几种方法。首先,将静态值修改为查询请求:

payload["issuance"]["claims"]["given_name"] = HttpContext.Request.Query["firstname"].ToString();

我还尝试过设置一个属性:

[FromQuery(Name = "firstname")]
public string firstname { get; set; }

然后将属性添加到有效载荷中:

payload["issuance"]["claims"]["given_name"] = firstname;

遗憾的是,所有这些都导致了相同的错误:

"Missing provided claims in issuance: [given_name]","target":"issuance.claims"

供参考,方法签名为

public async Task<ActionResult> IssuanceRequest()

正如你可能会发现的,我对.NET.并不了解

请问正确的方法是什么?感谢

好的,我相信还有其他方法可以做到这一点,但我们最终通过修改Issuer.cshtml 中的IssuanceRequest方法来实现

fetch('/api/issuer/issuance-request?firstName=@HttpContext.Request.Query["firstName"].ToString()&lastName=@HttpContext.Request.Query["lastName"].ToString()&email=@HttpContext.Request.Query["email"].ToString()&phone=@HttpContext.Request.Query["phone"].ToString()')

无论如何,感谢的帮助

如果我理解正确,你只需要为你的操作方法添加一个参数:

public async Task<ActionResult> IssuanceRequest(string firstname)

如果您想指定值的来源和查询参数的名称(可选(,也可以添加FromQuery属性:

public async Task<ActionResult> IssuanceRequest([FromQuery(Name = "firstname"]string firstname)

最新更新