That should work. I cannot repro.
Model:
public class ModelClass
{
public string Name { get; set; }
public DetailClass Detail { get; set; }
}
public class DetailClass
{
public string Name { get; set; }
}
Controller:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new ModelClass
{
Name = "model name",
Detail = new DetailClass
{
Name = "detail name"
}
};
return View(model);
}
[HttpPost]
public ActionResult Index(ModelClass model)
{
return Content(
string.Format(
"name: {0}, detail.name: {1}",
model.Name,
model.Detail.Name
)
);
}
}
View:
@model ModelClass
@using (Html.BeginForm())
{
@Html.EditorFor(x => x.Name)
@Html.EditorFor(x => x.Detail.Name)
<button type="submit">OK</button>
}
The 2 properties are correctly bound.
public string Name { get; set;}? Is Model's Detail property defined as public?public Detail Detail { get; set; }?@Html.EditorFor