Asp.net core mvc Asp.Net Core 1.1 ViewModel表单发布后为空

Asp.net core mvc Asp.Net Core 1.1 ViewModel表单发布后为空,asp.net-core-mvc,viewmodel,Asp.net Core Mvc,Viewmodel,我有一个名为ResultsViewModel的viewmodel,我使用它在asp.net core mvc 1.1中强烈键入我的创建视图。它有5个下拉列表和几个输入字段,如下面的代码所示: 这是ViewModel 公共类ResultsViewModel { 公共结果视图模型() { } [显示(Name=“学生”)] 公共选择列表学生{get;set;} [显示(Name=“主题”)] 公共选择列表主题{get;set;} [显示(名称=“术语”)] 公共术语{get;set;} [显示(Na

我有一个名为ResultsViewModel的viewmodel,我使用它在asp.net core mvc 1.1中强烈键入我的创建视图。它有5个下拉列表和几个输入字段,如下面的代码所示:

这是ViewModel

公共类ResultsViewModel
{
公共结果视图模型()
{
}
[显示(Name=“学生”)]
公共选择列表学生{get;set;}
[显示(Name=“主题”)]
公共选择列表主题{get;set;}
[显示(名称=“术语”)]
公共术语{get;set;}
[显示(Name=“持续评估”)]
公共选择列表连续评估{get;set;}
[显示(Name=“连续评估分数”)]
[DisplayFormat(DataFormatString=“{0:F2}”)]
公共双CAScore{get;set;}
[显示(Name=“学年”)]
公共选择列表会话{get;set;}
[显示(Name=“Class”)]
公共选择列表类{get;set;}
[显示(Name=“平均分数”)]
[DisplayFormat(DataFormatString=“{0:F2}”)]
公共双平均分数{get;set;}
[显示(Name=“术语总分”)]
[DisplayFormat(DataFormatString=“{0:F2}”)]
公共双项总计{get;set;}
}
这是创建视图。它的标准没有什么特别之处

@model swifftschool.ViewModels.ResultsViewModel
@{
ViewData[“标题”]=“创建”;
}
创造
结果

@DropDownList(“Student”、Model.Students、“Select Student”、new{@class=“form control”、@id=“studentselect”}) @DropDownList(“Subject”,Model.Subjects,“Select Subject”,新建{@class=“form control”,@id=“subjectselect”}) @Html.DropDownList(“Session”,Model.Session,“Select School Session”, 新的{@class=“form control”,@id=“sessionselect”}) @Html.DropDownList(“类”,Model.Class,“选择学生类”, 新的{@class=“formcontrol”,@id=“classselect”}) @Html.DropDownList(“C.A”,Model.ContinuousAssessments,“选择C.A”, 新的{@class=“form control”,@id=“caselect”})
您创建的DropDownList与模型中的任何属性都没有关系

第一个绑定到名为
Student
的属性,该属性不存在。第二个绑定到名为
Subject
的属性,该属性同样不存在。第三个绑定到属性
Session
,该属性是复杂对象的集合(
IEnumerable
),但
元素只回发一个值,即所选选项的值。第四场也一样

您的模型需要绑定到属性

[显示(Name=“学生”)]
[必填(“请选择一名学生”)]
public int SelectedStudent{get;set;}
公共IEnumerable学生{get;set;}
然后在它的视图中

@Html.DropwDownListFor(m=>m.SelectedStudent,Model.Students,“selectstudent”,new{@class=“form control”})
请注意,不清楚为什么要使用
new{@id=“studentselect”}
覆盖该方法生成的默认
id
属性(即
id=“SelectedStudent”

或者,使用标记辅助对象


选择学生
假设您提交了这些属性类型的有效值,则使用生成的3个输入将绑定良好


旁注:在POST方法中,您需要在将模型返回到视图之前重新填充SelectList,否则它们将
null
,并将引发异常-请参考

您是否尝试过使用其他方法<代码>@using(Html.BeginForm()){
@Tyriddik我会尝试一下,看看会发生什么。谢谢@Stephen,我希望ASPNET核心文档能把其中的一些事情弄清楚。我设置Id是因为我不知道Id是默认设置的。但是很好。非常感谢