首页 > 解决方案 > DropDownListFor 未在修改的 Scaffold Razor 页面中返回选定值

问题描述

我对 Razor 比较陌生,我使用的是默认模板。我有一个包含三个模型的 ViewModel:

public class CarAndOwnerViewModel
    {
        public IEnumerable<SelectListItem> Cars { get; set; }
        public SelectListItem SelectedCar { get; set; }
        public OwnerModel Person{ get; set; }
    }

我在我的创建方法中使用了这个 ViewModel。要获取我使用的汽车列表:

@Html.DropDownListFor(Model => Model.SeletedCar, new SelectList(Model.Cars, "Value", "Text", Model.Cars))

当我提交此下拉列表时, CarAndOwnerViewModel.SelectedCar 的值为 null。我有一个包含以下内容的文本框,它在 CarAndOwnerViewModel.Owner.Name 中:

<input asp-for="Owner.Naame" class="form-control" />

我在那个输入框中填写的内容被传递。我不知道为什么输入框工作但选择框不工作。

标签: asp.net-mvcrazor.net-core

解决方案


问题是SelectedCar应该是一个int而不是一个SelectedItem

将班级更改为

public class CarAndOwnerViewModel
    {
        public IEnumerable<SelectListItem> Cars { get; set; }
        public int SelectedCar { get; set; }
        public OwnerModel Person{ get; set; }
    }

修复了问题。


推荐阅读