Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将MVC POST名称/值绑定到控制器ViewModel_C#_Asp.net Mvc_Http - Fatal编程技术网

C# 如何将MVC POST名称/值绑定到控制器ViewModel

C# 如何将MVC POST名称/值绑定到控制器ViewModel,c#,asp.net-mvc,http,C#,Asp.net Mvc,Http,我正在尝试将HTML表单发布到PersonController.AppSave,但我认为映射/绑定有问题 我通过POST{Person.id:'12345,xaapplication.dateOfApplication:'01/01/2014'}发送了两个值,但是我的控制器似乎没有直接识别这些值,因为它期待xaapplication有充分的理由 如何绑定这些值?例如,我想将Person.id绑定到xaapplication.personId 我是不是做错了什么 谢谢你的帮助 @model MyN

我正在尝试将HTML表单发布到PersonController.AppSave,但我认为映射/绑定有问题

我通过POST{Person.id:'12345,xaapplication.dateOfApplication:'01/01/2014'}发送了两个值,但是我的控制器似乎没有直接识别这些值,因为它期待xaapplication有充分的理由

如何绑定这些值?例如,我想将Person.id绑定到xaapplication.personId

我是不是做错了什么

谢谢你的帮助

@model MyNameSpace.ViewModels.StudentViewModel

    @using (Html.BeginForm("Save", "Person", FormMethod.Post))
    {
    <div class="row">
        <div class="col-md-12">
            @Html.HiddenFor(m => m.Person.id, "default")
            <div class="form-group">
                <label for="dateOfApplication" class="col-md-3 control-label">Date of Application</label>
                <div class="col-md-9">
                    @Html.EditorFor(m => m.XApplication.dateOfApplication, new { htmlAttributes = new { @class = "form-control datepicker" } })
                </div>
            </div><!-- form-group -->
        </div><!-- .12 -->
    </div><!-- .row -->
    }


namespace MyNameSpace.ViewModels
{
      public class PersonViewModel
      {
        public Person Person { get; set; }
        public XApplication XApplications { get; set; }
      }
  }

namespace MyNameSpace.Controllers
{
    public class PersonController : Controller
    {
      [HttpPost]
      [Route("person/appSave")]
      public ActionResult AppSave(XApplication application)
      {
        return Redirect("/person/app/" + application.personId);
      }
    }
}

namespace MyNameSpace.Models
{
    public partial class XApplication
    {
        public int id { get; set; }

        [Required]
        public int personId { get; set; }

        [Required]
        [Column(TypeName = "date")]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime dateOfApplication { get; set; }
    }
}

更改控制器操作以接受StudentViewModel作为其参数。现在开始!很抱歉,我编辑成PersonViewModel。这很有效,谢谢!我注意到,当我提交带有空dateOfApplication的表单时,它没有考虑我的[Required]属性?对于不可为空的类型,[Required]有点无用,因为在这种情况下,如果不设置值,则会得到类型DateTime.MinValue的默认值。是否尝试将属性更改为DateTime?