У меня есть модельная структура объекта с классом Foo
, которая содержит Bar
со строковым значением.
public class Foo
{
public Bar Bar;
}
public class Bar
{
public string Value { get; set; }
}
И модель представления, которая использует эту структуру, подобную этой
public class HomeModel
{
public Foo Foo;
}
Тогда у меня есть форма, которая в Razor выглядит примерно так.
<body>
<div>
@using (Html.BeginForm("Save", "Home", FormMethod.Post))
{
<fieldset>
@Html.TextBoxFor(m => m.Foo.Bar.Value)
<input type="submit" value="Send"/>
</fieldset>
}
</div>
</body>
В html, который становится.
<form action="/Home/Save" method="post">
<fieldset>
<input id="Foo_Bar_Value" name="Foo.Bar.Value" type="text" value="Test">
<input type="submit" value="Send">
</fieldset>
</form>
Наконец, контроллер для обработки столбцов вроде этого
[HttpPost]
public ActionResult Save(Foo foo)
{
// Magic happends here
return RedirectToAction("Index");
}
Моя проблема в том, что Bar
в Foo
есть null
после того, как он попадает в действие контроллера Save
(Foo
создается, но с полем null
Bar
).
Я думал, что модельное связующее в MVC сможет создать объект Foo
и Bar
и установить свойство Value
, если оно выглядит так, как показано выше. Что мне не хватает?
Я также знаю, что моя модель просмотра немного сложна и может быть проще, но я за то, что я пытаюсь сделать, действительно помог бы мне, если бы мог использовать более глубокую структуру объекта. В приведенных выше примерах используется ASP.NET 5.