У меня есть сложный класс и код выглядит следующим образом:Значения доступа с использованием экземпляра или свойств
public class Person
{
public Address address;
public Address GetAddress { get; set; } //Property
// Constructor
public Person() { address = new Address(); }
}
public class Address
{
// Properties
public String Street { get; set; }
public String City { get; set; }
// Constructor
public Address() { Street = "Madison"; City = "NY"; }
}
Мои методы действия (подстриженная версия) следующим образом:
public ActionResult Index()
{
Person person = new Person();
return View(person);
}
[HttpPost]
public ActionResult Index(Person person)
{
ViewBag.City = person.address.City;
return View();
}
С моей точки зрения/.cshtml file: Я могу получить доступ к значениям для адреса через экземпляр модели или свойство.
Когда воспитывает Вид на 1-е раз:
Если я получить доступ к значениям по примеру@Html.TextBoxFor(m => m.address.Street)
- я получаю значение, установленное в конструкторе класса - Мэдисон и Нью-Йорк. Если я получаю доступ к нему через свойство -@Html.TextBoxFor(m => m.GetAddress.Street)
, я получаю пустые значения.Внутри моего контроллера действий
public ActionResult Index(Person person)
ме-: Если я получить доступ к значениям, используя экземпляр -person.address.street/city
, я получаю старые значения, присвоенные моей модели - Мэдисон и Нью-Йорк. Если я обращаюсь к значениям с использованием свойства -person.GetAddress.Street
, я получаю обновленные значения, введенные из представления.
Заранее спасибо.
' address' - это поле, а не свойство (оно не имеет 'get; set;'), поэтому привязка модели не может ** установить ** значение, поэтому вы устанавливаете только значения, которые были установлены в конструкторе –