首页 > 解决方案 > 从类型“System.String”到类型“ModelsLibrary.Turno”的参数转换失败,因为没有类型转换器可以在这些类型之间进行转换

问题描述

我被这个难住了,你的帮助将不胜感激。

我得到错误:

从类型“System.String”到类型“ModelsLibrary.Turno”的参数转换失败,因为没有类型转换器可以在这些类型之间进行转换。

我将字典作为模型传递给视图,我想取回模型但出现错误....

有任何想法吗?

        [HttpPost]
    public async Task<IActionResult> Create(IDictionary<Turno, int> dicionario)
    {
        var turnodocente = new List<TurnoDocente>();

        foreach (var item in dicionario)
        {
            turnodocente.Add(new TurnoDocente
            {
                TurnoId = item.Key.TurnoId,
                DocenteId = item.Value
            });
        }

        HttpResponseMessage responsemeta = await HttpRequestBuilder.WebApiClient.PostAsJsonAsync("api/TurnoDocente", turnodocente);
        responsemeta.EnsureSuccessStatusCode();


        return RedirectToAction(nameof(Index));
    }

和视图

@model IDictionary<ModelsLibrary.Turno, List<int>>
@{
ViewData["Title"] = "Index";
}
<div class="row">
    <div class="col-md-4">
        <form asp-action="Index" method="post">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label>Ano Letivo</label>
                <select name="anoLetivo" class="form-control" asp-items="ViewBag.Ano"></select>
            </div>
            <div class="form-group">
                <label>Ano Curricular</label>
                <select name="ano" class="form-control">
                    <option>-Select-</option>
                    <option>1</option>
                    <option>2</option>
                    <option>3</option>
                </select>
            </div>
            <div class="form-group">
                <label>Semestre</label>
                <select name="semestre" class="form-control">
                    <option>-Select-</option>
                    <option value="1">1</option>
                    <option value="2">2</option>
                </select>
            </div>
            <div class="form-group">
                <input type="submit" value="Escolhido" class="btn btn-default" />
            </div>
        </form>
    </div>
</div>

@if (Model.Count != 0)
{
<form asp-action="Create" method="post">
    <table class="table">
        <thead>
            <tr>
                <th>
                    <label>Disciplina</label>
                </th>
                <th>
                    <label>Turno</label>
                </th>
                <th>
                    <label>Tipologia</label>
                </th>
                <th>
                    <label>Docente</label>
                </th>
            </tr>
        </thead>
        <tbody>
            @foreach (KeyValuePair<ModelsLibrary.Turno, List<int>> dvp in Model)
            {
                @Html.HiddenFor(x => dvp.Key.TurnoId)
                <tr>
                    <td>
                        @Html.DisplayFor(modelItem => dvp.Key.MetaDisciplina.Nome)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => dvp.Key.LetraTurno)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => dvp.Key.Tipologia.Tipo)
                    </td>
                    <td>
                        <select name="nome" asp-items="ViewBag.Docente"></select>
                    </td>
                </tr>
            }              
        </tbody>
    </table>

    <div class="form-group">
         <input type="submit" value="Create" class="btn btn-default" />
    </div>
</form>
}

注意:我想知道是否可以从 type 获取参数,Dictionary<Turno, int>因为我传递给了 view Dictionary<Turno, List<int>>

标签: c#model-view-controller

解决方案


推荐阅读