Asp.net core mvc Asp.Net Core 1.1 ViewModel表单发布后为空
我有一个名为ResultsViewModel的viewmodel,我使用它在asp.net core mvc 1.1中强烈键入我的创建视图。它有5个下拉列表和几个输入字段,如下面的代码所示: 这是ViewModelAsp.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
{
公共结果视图模型()
{
}
[显示(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是默认设置的。但是很好。非常感谢