C# 提交表单时,模型属性为空
在ASP.NET MVC 5项目中,我有以下模型:C# 提交表单时,模型属性为空,c#,asp.net-mvc,C#,Asp.net Mvc,在ASP.NET MVC 5项目中,我有以下模型: public class ScheduleIndexModel { public IPageList<DataModel> Data { get; set; } public FormModel Form { get; set; } public class DataModel { public Int32 Id { get; set; } public String[] Attendees { ge
public class ScheduleIndexModel {
public IPageList<DataModel> Data { get; set; }
public FormModel Form { get; set; }
public class DataModel {
public Int32 Id { get; set; }
public String[] Attendees { get; set; }
public String Location { get; set; }
public DateTime Date { get; set; }
} // DataModel
public class FormModel {
public String Location { get; set; }
public String Date { get; set; }
} // FormModel
}
当我提交表单时,模型不是空的,但是即使我在文本框上写了一些东西,它的属性也是空的
有人知道我做错了什么吗?您可能需要使用绑定前缀,因为您的viewmodel是嵌套的。类似的方法可能会奏效:
public virtual ActionResult Index([Bind(Prefix = "Form")] FormModel model)
您的html帮助程序(例如@html.TextBoxFor(x=>x.Form.Date)
将生成如下html
<input name="Form.Date" .../>
或者使用Big Daddy建议的
[Bind(Prefix..)
视图中的模型是@model ScheduleIndexModel
还是@model FormModel
。如果是前者(我怀疑是),那么它应该是操作结果索引(ScheduleIndexModel model)
(或者使用[Bind](Prefix=
它是@model ScheduleIndexModel…所以要在我的操作中使用FormModel,我需要绑定(前缀?前缀的值是多少?我试过了,在这种情况下,表单模型在提交表单时变为null…前缀应该是表单,而不是ScheduleIndexModel。除此之外,这是解决方案。你能更新你的答案吗?这样我就可以将其标记为答案。
public virtual ActionResult Index([Bind(Prefix = "Form")] FormModel model)
<input name="Form.Date" .../>
public virtual ActionResult Index(ScheduleIndexModel model,...
{
FormModel form = model.Form; // get the FormModel