首页 > 解决方案 > 如果值为字符串,则 ASP.NET Core SelectList 不绑定

问题描述

ViewData["ComponenteId"] = new SelectList(await GetComponentes(Geometria.MatrizId), "Nome", "Nome", Geometria.Componente);

这是视图

<div class="form-row">
    <div class="form-group col-md-4">
        <label asp-for="Geometria.Componente" class="control-label"></label>
        <select asp-for="Geometria.Componente" class="custom-select" asp-items="ViewBag.ComponenteId">
            <option value="">Selecione um Componente</option>
        </select>
        <span asp-validation-for="Geometria.Componente" class="text-danger"></span>
    </div>
</div>

不管它不会绑定,我不明白为什么值和文本基本上是相同的属性。

这就是它在 html 中的呈现方式

<select class="custom-select input-validation-error" data-val="true" data-val-required="The Componente POE field is required." id="Geometria_Componente" name="Geometria.Componente" aria-describedby="Geometria_Componente-error" aria-invalid="true">
    <option value="">Selecione um Componente</option>
    <option value="M130291">M130291</option>
    <option value="M130559">M130559</option>
    <option value="M140004">M140004</option>
    <option value="M140040">M140040</option>
    <option value="SA00367A300">SA00367A300</option>
    <option value="SS98940A100">SS98940A100</option>
</select>

更新

似乎它没有绑定它的原因是因为该值甚至在我开始使用 Entity Framework Core 之前就有空格。旧的数据类型是 varchar,因此它无法识别它。

标签: c#htmlasp.net-core-mvc

解决方案


推荐阅读