发布后选择列表未绑定以查看模型值

时间:2019-05-17 02:06:14

标签: select asp.net-core

从ASP.NET Core MVC项目中的表单发布时,选择的输入项未绑定到模型中的值。

我遵循了几本关于如何执行此操作的指南,包括官方的《选择输入标签助手的MSDN指南》,但是所选值仍未绑定到我的视图模型变量。

cshtml:

<form asp-action="Search" method="post">
    <select asp-for="SourceTypeId" asp-items="Model.SpellSources"></select>
</form>

ViewModel:

public class SpellsVM
{
    public string Title = "Spells";
    public List<CheckBoxModel> Eras { get; set; }
    public List<CheckBoxModel> Classes { get; set; }
    public List<SelectListItem> SpellSources { get; set; }
    public List<SpellSearchResult> SpellSearchResults { get; set; }                
    public int SourceTypeId;

    public SpellsVM()
    {
        SpellSources = new List<SelectListItem>();
        Eras = new List<CheckBoxModel>();
        Classes = new List<CheckBoxModel>();
    }
}

操作:

[HttpPost]
public IActionResult Search(SpellsVM vm)
{
    vm.SourceTypeId // Always ZERO
    return View(vm);
}

vm.SourceTypeId在发布时始终为零。我确实在Request.Form中看到了值,例如:

Request.Form["SourceTypeId"] = 2

但是为什么它没有显示在ViewModel的{​​{1}}值中?

1 个答案:

答案 0 :(得分:0)

因此,在一次细分之后,我发现问题是我的SourceTypeID属性没有get / set修饰符。以下更改解决了该问题。

public int SourceTypeId { get; set; }