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