ASP.NET Core выберите тег - PullRequest
0 голосов
/ 04 июля 2018

Я изучаю ядро ​​asp .net, и для этого я разрабатываю простое приложение для блогов. Я хочу отредактировать существующий пост и хочу иметь выпадающий список с категориями постов, но по умолчанию выбрал текущую категорию поста. Я не могу сделать это в представлении.

Вот моя ViewModel:

namespace Blog.Models.ViewModels
{
    public class CategoryViewModel
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public IEnumerable<Posts> Posts { get; set; }
        public IEnumerable<Categories> Categories { get; set; }
    }
}

Вот мое действие контроллера:

[HttpGet]
public async Task<IActionResult> Edit(int? id)
{
  if (id == null)
  {
    return NotFound();
  }

  var posts = _db.Posts.ToList();
  var post = posts.Where(m => m.Id.Equals(id));
  var cats = _db.Categories.ToList(); 
  CategoryViewModel categoryViewModel = new CategoryViewModel();

  categoryViewModel.Posts = post;
  categoryViewModel.Categories = cats;

  return View(categoryViewModel);
}

И, наконец, вот мой взгляд:

<label for="postCategory">Category</label>
<select>
@foreach (var cats in Model.Categories)
{
   <option value="@Html.DisplayFor(m => cats.Id)">
      @Html.DisplayFor(m => cats.Title)
   </option>
}
</select>

У меня вопрос, как сделать что-то похожее на это:

<option value="@Html.DisplayFor(m => cats.Id)" **if(post.Category = cats.Id){ print selected }**>
   @Html.DisplayFor(m => cats.Title)
</option>

1 Ответ

0 голосов
/ 06 сентября 2018

Попробуйте изменить цикл ForEach следующим образом:

@foreach (var cats in Model.Categories)
{
    <!option value="@cats.Id" @((@Model.Posts.FirstOrDefault == cats.Id) ? "selected" : string.Empty)>@cats.Title()</!option>
}

Важно это! в теге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...