Как я должен отправить viewmodel для метода Create в контроллере? - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь отправить данные из представления в метод Create контроллера.Но параметр модели представления получает нулевые значения при вызове метода create.

На мой взгляд, я хочу добавить элемент и показать список добавленных элементов.Я пытался отправить данные в метод create, но его параметр модели представления получает нулевые значения.

В следующем коде всякий раз, когда для метода Create указывается значение p.posts, а p.post имеет значение null.Как я могу получить значение p.post и p.posts здесь?

Метод контроллера

public ActionResult Create(PostsViewModel p) {}

Просмотр модели

public class PostsViewModel
{
    public IEnumerable<Post> posts;
    public Post post;

}

Просмотр

@model NotesWebApplication.ViewModels.PostsViewModel

...

@using (Html.BeginForm())  {

...

@Html.EditorFor(model => model.post.postText, new { htmlAttributes = new { @class = "form-control" } })

...

<input type="submit" value="Create" class="btn btn-default" />

Также в моем методе Create, если я хотел добавитьПривязка, которая должна быть добавлена ​​

[Bind(Include="postText")]

или

[Bind(Include="post.postText")]

update

Я внес следующие изменения в класс PostsViewModel

public class PostsViewModel
    {
        public IEnumerable<Post> posts { get; set; }
        public Post post { get; set; }

    }

и метод Create в контроллере изменяется на

[HttpPost]
  public ActionResult Create([Bind(Include="post, posts")]PostsViewModel p) {}

Так выглядит метод httpget Create

// GET: Posts/Create
        public ActionResult Create()
        {
            PostsViewModel postsViewModel = new PostsViewModel();
            postsViewModel.posts = db.Posts;
            postsViewModel.post = new Post();
            return View(postsViewModel);
        }

Теперь, когда я отправляю форму p.сообщение в параметре контроллера получает желаемое значение.Но p.posts остается нулевым.Почему это происходит?

1 Ответ

0 голосов
/ 10 февраля 2019

Я думаю, причина в том, что у вас нет экземпляра вашего почтового объекта.Попробуйте сделать вашу viewModel примерно так:

public class PostsViewModel
{
    public string PostText {get;set;} // don`t forget to make it like property, not just a field
}

, а затем создайте экземпляр в вашем контроллере:

public ActionResult Create(PostsViewModel p) 
{
   Post post = new Post{ postText = p.PostText};
   //and do what you want with it
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...