Каждое свойство объекта POCO используется как свойство, управляемое CLR. Позвольте CLR управлять созданием экземпляра и т. Д., Или вы можете создавать конфликты, которые могут вызвать проблемы, как у вас.
Измените код заказа на:
public class Order
{
public List<TranslationGroup> Groups { get; set; }
}
- EDIT
Я создаю новый проект и добавляю следующий класс:
public class TranslationGroup
{
public string GroupId { get; set; }
}
public class Order
{
public List<TranslationGroup> Groups { get; set; }
}
public class OrderTest
{
public string UserName { get; set; }
public string Token { get; set; }
public Order Order { get; set; }
}
Вот мой код позади OrderTestController:
public ActionResult Index()
{
var orderTest = new Models.OrderTest()
{
UserName = "Vinicius",
Token = "12as1da58sd558",
Order = new Models.Order()
{
Groups = new List<Models.TranslationGroup>()
{
new Models.TranslationGroup() { GroupId = "a54s"},
new Models.TranslationGroup() { GroupId = "a87d"},
new Models.TranslationGroup() { GroupId = "2gf4"}
}
}
};
return View(orderTest);
}
[HttpPost]
public ActionResult Index(Models.OrderTest model)
{
return View();
}
И индексный просмотр:
@model TestCollection.Models.OrderTest
@{
ViewBag.Title = "Index";
}
<h2>
Index</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>OrderTest</legend>
<div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Token)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Token)
@Html.ValidationMessageFor(model => model.Token)
</div>
@for (int i = 0; i < Model.Order.Groups.Count; i++)
{
<div class="editor-label">
@Html.LabelFor(m => Model.Order.Groups[i].GroupId)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => Model.Order.Groups[i].GroupId)
</div>
}
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
Итак, если вы запустите и перейдете в представление OrderTest, вы увидите, что все атрибуты заполнены, и когда вы нажмете кнопку «Создать», все вещи будут связаны (также и коллекция).