Почему список не связан? - PullRequest
0 голосов
/ 10 декабря 2018

Я получил очень простое приложение ASP.NET MVC (5.2.4.0) с кодом ниже.Я не могу найти причину, по которой модель. Адреса пустые, когда форма отправляется в метод [HttpPost] .Может кто-нибудь, пожалуйста, помогите мне?Что я вижу, мой код соответствует ответам на похожие вопросы здесь, в StackOverflow.

HomeController.cs

namespace WebApplication2.Controllers {

    public class IndexViewModel {

    public string Name { get; set; }

        public List<Address> Addresses;

        public IndexViewModel()
        {
            Addresses = new List<Address>();
        }
    }

    public class Address
    {
        public string Name { get; set; }

        public string Id { get; set; }
    }

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var model = new IndexViewModel();

            model.Addresses = new List<Address>();
            model.Addresses.Add(new Address() { Id = "1", Name = "A1" });
            model.Addresses.Add(new Address() { Id = "2", Name = "A2" });

            return View(model);
        }

        [HttpPost]
        public ActionResult Index(IndexViewModel model)
        {
            return View(model);
        }
    }
}

Index.cshml:

@model WebApplication2.Controllers.IndexViewModel
@{
    ViewBag.Title = "Home Page";
}

@using (Html.BeginForm("Index", "Home"))
{

    @Html.EditorFor(m => m.Name)

    for (var i = 0; i < Model.Addresses.Count; i++)
    {
        @Html.TextBoxFor(m => Model.Addresses[i].Name)
        @Html.HiddenFor(m => Model.Addresses[i].Id)
    }

    <input type="submit" value="Ok" />
}

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Пожалуйста, объявите адреса как свойство, как показано ниже, так как вы объявили его как открытое поле, а не свойство, поэтому оно не может содержать назначенное вами значение.

 public List<Address> Addresses{get;set;};
0 голосов
/ 10 декабря 2018

Как Тецуя Ямамото упоминание в комментариях выше, ошибка произошла из-за того, что Адреса являются открытым полем, а не свойством.

 public List<Address> Addresses;

следует заменить на

 public List<Address> Addresses { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...