Как использовать viewmodel в Asp.net MVC - PullRequest
0 голосов
/ 16 октября 2018
public ActionResult listItems()
{
    var getTopStories =  DB.posts.Where(x => x.post_type == "blog").OrderByDescending(x => x.id).Take(4).ToList();

    return View(getTopStories);
}
public ActionResult singleItem()
{
    var single = DB.posts.Where(x => x.post_type == "paper").OrderByDescending(x => x.id).First();
    return View(single);

}

Как и в приведенном выше коде, у меня есть два метода результата действия, но оба имеют разные условия, поэтому я хочу показать оба метода в View без использования View Bag, как я могу это сделать?

1 Ответ

0 голосов
/ 16 октября 2018

предположим, у вас есть класс Post с некоторыми свойствами (id, name и т. Д.).Сначала создайте новый класс, подобный этому,

public class PostViewModel
{
    public List<Post> PostList { get; set; }
    public Post SinglePost { get; set; }
}

Теперь в вашем результате действия (не требуется двух отдельных результатов действия) сопоставьте свои данные в представлении модели следующим образом

public ActionResult SingleAndlistPost()
{
           PostViewModel model=new PostViewModel
            {
                PostList = DB.posts.Where(x => x.post_type == "blog").OrderByDescending(x => x.id).Take(4).ToList(),
                SinglePost = DB.posts.Where(x => x.post_type == "paper").OrderByDescending(x => x.id).First()
            };

           return View(model);
}

Наконец, в вашем cshtml представлении доступа к данным, подобным этому

@model YourProject.YourModel.PostViewModel 
//.......

<p>@Model.SinglePost.MyProperty</p>

foreach (var list in Model.PostList)
{
    <p>@list.MyProperty</p>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...