我的應用程式中出現以下例外,我不知道如何解決。
處理請求時發生未處理的例外。InvalidOperationException:傳遞到 ViewDataDictionary 的模型項的型別為“System.Collections.Generic.Dictionary
2[ProjetoFinalMVC.Models.Especializacao,System.Collections.Generic.List1[ProjetoFinalMVC.Models.Consulta]]”,但此 ViewDataDictionary 實體需要“System.Collections.Generic.IEnumerable1[System.Linq.IGrouping2 ”型別的模型項[ProjetoFinalMVC.Models.Especializacao,ProjetoFinalMVC.Models.Consulta]]'。
我在服務中有這個功能
public async Task<Dictionary<Especializacao, List<Consulta>>> EncontrarGrupoAsync(DateTime? minDate, DateTime? maxDate)
{
var consultas = await EncontrarDataAsync(minDate, maxDate);
var especializacoes = await _contexto.Especializacao.ToListAsync();
var grouping = new Dictionary<Especializacao, List<Consulta>>();
especializacoes.ForEach(e =>
{
var consulta = consultas.Where(c => c.Doutor.Especializacao == e).ToList();
grouping.Add(e, consulta);
});
return grouping;
}
我在控制器中呼叫它
public async Task<IActionResult> BuscaGrupo(DateTime? minDate, DateTime? maxDate)
{
if (!minDate.HasValue)
{
minDate = new DateTime(DateTime.Now.Year, 1, 1);
}
if (!maxDate.HasValue)
{
maxDate = DateTime.Now;
}
ViewData["minDate"] = minDate.Value.ToString("yyyy-MM-dd");
ViewData["maxDate"] = maxDate.Value.ToString("yyyy-MM-dd");
var resultado = await _consultasService.EncontrarGrupoAsync(minDate, maxDate);
return View(resultado);
}
在方法的視圖中,我有這個模型
@model IEnumerable<IGrouping<Especializacao,Consulta>>
我做錯了什么?
我試圖在視圖中回傳字典,但我不知道如何。
如果我將模型更改為
@model Dictionary<Especializacao, List<Consulta>>
我在這一行收到一個錯誤,說不能在鍵值對中使用 foreach
@foreach (var especialiGroup in Model)
@*
@model IEnumerable<IGrouping<Especializacao,Consulta>>
*@
@model Dictionary<Especializacao, List<Consulta>>
@{
ViewData["Title"] = "Pesquisar consultas";
DateTime minDate = DateTime.Parse(ViewData["minDate"] as string);
DateTime maxDate = DateTime.Parse(ViewData["maxDate"] as string);
<h2>@ViewData["Title"]</h2>
<nav class="navbar navbar-inverse">
<div class="container-fluid">
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<div class="form-group">
<label for="minDate">Data Inicial</label>
<input type="date" class="form-control" name="minDate" value=@ViewData["minDate"] />
</div>
<div class="form-group">
<label for="maxDate">Data Final</label>
<input type="date" class="form-control" name="maxDate" value=@ViewData["maxDate"] />
</div>
</div>
<button type="submit" class="btn btn-primary">Pesquisar</button>
</form>
</div>
</nav>
@foreach (var especialiGroup in Model)
{
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Especializa??o @especialiGroup.Key.Nome, Total de consultas: @especialiGroup.Key.TotalDeConsultas(minDate,maxDate)</h3>
</div>
<div class="panel-body">
<table class="table table-striped table-hover">
<thead>
<tr class="bg-secondary">
<th>
Data
</th>
<th>
Valor
</th>
<th>
Doutor
</th>
</tr>
</thead>
<tbody>
@foreach (var item in especialiGroup)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Data)
</td>
<td>
@Html.DisplayFor(modelItem => item.Valor)
</td>
<td>
@Html.DisplayFor(modelItem => item.Doutor.Nome)
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
}
}
uj5u.com熱心網友回復:
您正在從控制器發送以查看此模型
Dictionary<Especializacao, List<Consulta>
但你的觀點是期待
@model IEnumerable<IGrouping<Especializacao,Consulta>>
可能您應該在 BuscaGrupo 操作中創建 ViewModel 并將字典轉換為 ViewModel
public class ViewModel
{
public List<Consulta> listConsulta {get; set;}
}
并查看
@model ViewModel
uj5u.com熱心網友回復:
我解決了這個問題,只是把這條線放在了 foreach
@foreach (var item in especialiGroup.Value)
現在它正在作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/406524.html
標籤:
