asp.net - MVC ViewModel 返回 ArgumentNullException

标签 asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-viewmodel

使用 ViewModel 时,我在将值返回到 Controller 时遇到问题。

为了清楚起见,我简化了下面的代码,其中原始代码有更多字段。

加载页面后,隐藏字段中的值符合预期。但是,当提交表单时,字段中的值不会被发送,而是收到 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();
    }
}

Controller

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ScorecardEdit(SCView ReturnSC)
{
}

最佳答案

您拥有的代码应该作为 MVC 工作,应该能够按预期映射您的 FV.ID 属性,因为 HiddenFor() 帮助程序将生成正确的名称处理映射它:

enter image description here

使用您提供的相同代码,调试器在提交表单后演示了以下内容:

enter image description here

这里的问题听起来像是您还有一些其他属性,可能是基于集合的属性,这些属性使用 DropDownListFor() 帮助程序,这些帮助程序具有未发布到服务器的集合,因此当您尝试使用您必须渲染的模型填充这些助手之一,您将收到 ArgumentNullException

关于asp.net - MVC ViewModel 返回 ArgumentNullException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36649362/

相关文章:

android - 服务堆栈的基本身份验证

c# - 对多个表执行全文搜索

asp.net-mvc - 带有 IE8 的 IIS6 无法正确加载 ASP.NET MVC 站点

asp.net-mvc-4 - MVC 4 中客户 URL 的自定义 OpenIdClient

asp.net-mvc-4 - 模拟 WebSecurity 提供者

asp.net-mvc-4 - 没有参数的 MVC4 ActionLink 指向当前路径

c# - 在 ASP.NET Core 中未经授权时重定向到登录

asp.net - 在 Windows Server 上无法确定重定向的 https 端口,但在 PC 上无法确定?

asp.net-mvc - 如何使用 WebSecurity + SimpleMembership 手动设置 "log a user in"?

asp.net-mvc - 通过 post asp.net mvc 将 webgrid 数据传递回 Controller