Я хочу отобразить имя на странице бритвы, выбрав его из модели и передав его через Viewbag в контроллере.
Контроллер
public IActionResult sheet()
{
var tp1 = _db.Topic.Where(t => t.sheet_id == 1).ToList();
var tp1name = tp1.Select(t => t.topic1name);
ViewBag.tp1name = tp1name;
return View();
}
Модель
public class Topic
{
[Key]
public int topic_id { get; set; }
[Required]
public int sheet_id { get; set; }
[Required]
public string topic1name { get; set; }
[Required]
public string topic2name { get; set; }
}
public class Transaction
{
[Key]
public int id { get; set; }
[Required]
public int sheet_id { get; set; }
[Required]
public string topic1score { get; set; }
}
Просмотр страницы
@model transaction
<table class = "table">
<tr>
<td rowspan = "2">1</td>
<td rowspan = "2">@ViewBag.tp1name</td>
<td rowspan = "2">30</td>
<td>Below average</td>
<td>Average</td>
<td>Above average</td>
</tr>
Он возвращается System.Linq.Enumerable+SelectListIterator`2[UserLoginApp.Models.Topic,System.String] на странице просмотра вместо top1name





tp1 — это список тем.
поэтому, когда вы делаете выбор, он создает новый Enumerable en для каждого элемента в tp1, он выбирает значение topic1name.
Таким образом, создавая Enumerable+SelectListIterator
Я думаю, вам нужно значение одного элемента:
var tp1 = _db.Topic.FirstOrDefault(t => t.sheet_id == 1)
if (tp1 != null)
ViewBag.tp1name = tp1.topic1name;