如何解决将IEnumerable <T>传递给Blazor WASM中的API方法
请问如何在Blazor WASM项目中使用Http.GetFromJsonAsync传递IEnumerable参数? 这是我在剃须刀组件中的代码:
IEnumerable<WAGPiattValidePerUtente> piattValidePerUtente;
dipendenti = await Http.GetFromJsonAsync<IEnumerable<WAGDipendentiAttivitaNGiorniPrec>>($"WAGDipendentiAttivitaNGiorniPrecService/ByDaySottrDataPiattaforme/{(short)7}/{dataRif.ToString("yyyyMMdd")}/{piattValidePerUtente}");
在我的API控制器中,代码为:
[HttpGet("ByDaySottrDataPiattaforme/{giorniDaSottrarre}/{dataRif}/{piattaforme}")]
public async Task<ActionResult<IEnumerable<WAGDipendentiAttivitaNGiorniPrec>>> GetWAGDipendentiPiattAttivitaNGiorniPrec(short giorniDaSottrarre,string dataRif,IEnumerable<WAGDipendentiAttivitaNGiorniPrec> piattaforme)
{
//call a store procedure...
}
调用该方法时,出现此错误: 加载资源失败:服务器响应状态为415() 不支持的媒体类型
有人可以帮我吗?
解决方法
如何在Blazor WASM项目中使用Http.GetFromJsonAsync传递IEnumerable参数?
无法加载资源:服务器的响应状态为415()不支持的媒体类型
通常,我们使用路由数据和查询字符串值来传递简单类型数据。
要满足通过路由数据将IEnumerable参数传递给操作方法的要求,可以尝试实现和使用自定义模型绑定程序,如下所示。
public class MyModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
if (bindingContext == null)
{
throw new ArgumentNullException(nameof(bindingContext));
}
// ...
// implement it based on your actual requirement
// code logic here
// ...
var model = new List<WAGPiattValidePerUtente>();
if (bindingContext.ValueProvider.GetValue("piattaforme").FirstOrDefault() != null)
{
model = JsonSerializer.Deserialize<List<WAGPiattValidePerUtente>>(bindingContext.ValueProvider.GetValue("piattaforme").FirstOrDefault());
}
bindingContext.Result = ModelBindingResult.Success(model);
return Task.CompletedTask;
}
}
将其应用于操作参数
[HttpGet("ByDaySottrDataPiattaforme/{giorniDaSottrarre}/{dataRif}/{piattaforme}")]
public async Task<ActionResult<IEnumerable<WAGDipendentiAttivitaNGiorniPrec>>> GetWAGDipendentiPiattAttivitaNGiorniPrec(short giorniDaSottrarre,string dataRif,[ModelBinder(BinderType = typeof(MyModelBinder))]
IEnumerable<WAGPiattValidePerUtente> piattaforme)
{
//call a store procedure...
从客户端应用发出请求
var piattValidePerUtente_data = Uri.EscapeDataString(JsonSerializer.Serialize(piattValidePerUtente));
dipendenti = await Http.GetFromJsonAsync<IEnumerable<WAGDipendentiAttivitaNGiorniPrec>>($"WAGDipendentiAttivitaNGiorniPrecService/ByDaySottrDataPiattaforme/{(short)7}/{dataRif.ToString("yyyyMMdd")}/{piattValidePerUtente_data}");
测试结果
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。