从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}}值中?
答案 0 :(得分:0)
因此,在一次细分之后,我发现问题是我的SourceTypeID属性没有get / set修饰符。以下更改解决了该问题。
public int SourceTypeId { get; set; }