MVC 视图模型 returns ArgumentNullException
MVC ViewModel returns ArgumentNullException
我在使用 ViewModel 时向控制器返回值时遇到问题。
为清楚起见,我简化了下面的代码,其中原始代码包含更多字段。
加载页面时,隐藏字段中的值符合预期。但是,当提交表单时,字段中的值没有被发送,而是我得到一个 ArgumentNullException。
请你指出我做错了什么。
查看
@model Project.Models.SCView
@using (Html.BeginForm("ScorecardEdit"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.FV.ID)
<input type="submit" value="Save" />
}
型号
public class FixView
{
public int ID { get; set; }
[DisplayFormat(DataFormatString = "{0:ddd dd/MM/yyyy}")]
public DateTime MatchDate { get; set; }
}
public class SCView
{
public FixView FV { get; set; }
public SCView()
{
this.FV = new FixView();
}
}
控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ScorecardEdit(SCView ReturnSC)
{
}
您拥有的代码应该可以正常工作,因为 MVC 应该能够按预期映射您的 FV.ID
属性,因为 HiddenFor()
助手将生成正确的名称来处理它的映射:
使用您提供的相同代码,调试器在提交表单后演示了以下内容:
这里的问题听起来您还有一些其他属性,可能 collection-based 使用 DropDownListFor()
助手的属性,这些助手具有未发布到服务器的集合,因此当您尝试使用您必须渲染的模型填充其中一个助手,您将获得 ArgumentNullException
.
我在使用 ViewModel 时向控制器返回值时遇到问题。
为清楚起见,我简化了下面的代码,其中原始代码包含更多字段。
加载页面时,隐藏字段中的值符合预期。但是,当提交表单时,字段中的值没有被发送,而是我得到一个 ArgumentNullException。
请你指出我做错了什么。
查看
@model Project.Models.SCView
@using (Html.BeginForm("ScorecardEdit"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.FV.ID)
<input type="submit" value="Save" />
}
型号
public class FixView
{
public int ID { get; set; }
[DisplayFormat(DataFormatString = "{0:ddd dd/MM/yyyy}")]
public DateTime MatchDate { get; set; }
}
public class SCView
{
public FixView FV { get; set; }
public SCView()
{
this.FV = new FixView();
}
}
控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ScorecardEdit(SCView ReturnSC)
{
}
您拥有的代码应该可以正常工作,因为 MVC 应该能够按预期映射您的 FV.ID
属性,因为 HiddenFor()
助手将生成正确的名称来处理它的映射:
使用您提供的相同代码,调试器在提交表单后演示了以下内容:
这里的问题听起来您还有一些其他属性,可能 collection-based 使用 DropDownListFor()
助手的属性,这些助手具有未发布到服务器的集合,因此当您尝试使用您必须渲染的模型填充其中一个助手,您将获得 ArgumentNullException
.