Из того, что я могу сказать, мне нужно сказать, чтобы оно связывалось со свойством блокировки, называемой «Комбинации», оттуда я больше не могу выбирать, включать или исключать свойства для связывания с подобъектом. Вместо этого мне нужно было бы указать атрибут bind для самого объекта модели домена.
[HttpPost]
public ActionResult Add([Bind(Include = "SchoolCode,Title,Combinations")] LockerLock @lock, [Range(1, 5)] int ActiveCombination)
{
...
}
Атрибут Bind включается в объект Combination ...
[Bind(Include = "Number,Combination")]
private class LockerLockCombination
{
[Required]
string Number { get; set; }
[Required]
string SchoolCode { get; set; }
}
Для согласованности я, вероятно, просто включу привязку к исходной модели блокировки ...
Для контраста, вот мое окончательное решение. Я просто добавил атрибут BindAttribute для модели предметной области в обоих случаях:
namespace Project.Web.Models
{
[MetadataType(typeof(LockerLock.Validation))]
public partial class LockerLock
{
[Bind(Include = "SchoolCode, Title, Combinations")]
private class Validation
{
[Required]
string Title {get; set;}
[Required]
string SchoolCode {get; set;}
}
}
}
namespace Project.Web.Models
{
[MetadataType(typeof(LockerLockCombination.Validation))]
public partial class LockerLockCombination
{
[Bind(Include = "Number, Combination")]
private class Validation
{
[Required]
string Number { get; set; }
[Required]
string Combination { get; set; }
}
}
}