【问题标题】:ASP.NET Core select tagASP.NET Core 选择标签
【发布时间】:2018-07-03 21:48:49
【问题描述】:

我正在学习 asp .net core,为此我正在开发简单的博客应用程序。我想编辑现有的帖子,我想有帖子类别的下拉列表,但默认选择帖子的当前类别。我没有在视图上执行此操作。

这是我的 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>

【问题讨论】:

    标签: html razor asp.net-core-2.0


    【解决方案1】:

    尝试像这样更改您的 ForEach 循环:

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

    重要的是!在标签中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-07
      • 2021-10-20
      相关资源
      最近更新 更多