C# 动态设置视图标题

C# 动态设置视图标题,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,甚至不确定我问的问题是否正确。我已经看了大约一个小时了,它太简单了,花不了多长时间。问题是我太简单了,不知道答案,甚至不知道如何正确地用短语搜索来找到答案 我有一个网站设置完成作业的历史记录 控制器: public async Task<IActionResult> JobSiteHistory(int id, int? page) { var jobs = from j in _context.Job .Include(j => j.Site)

甚至不确定我问的问题是否正确。我已经看了大约一个小时了,它太简单了,花不了多长时间。问题是我太简单了,不知道答案,甚至不知道如何正确地用短语搜索来找到答案

我有一个网站设置完成作业的历史记录

控制器:

public async Task<IActionResult> JobSiteHistory(int id, int? page)
{
    var jobs = from j in _context.Job
        .Include(j => j.Site)
        .Include(j=>j.WaterBody)
        .Where(j=>j.Site.SiteID==id)
        .OrderByDescending(j=>j.BookingDate)
        select j;
    int pageSize = 9;
    return View(await PaginatedList<Job>.CreateAsync(jobs.AsNoTracking(), page ?? 1, pageSize));
}
ViewBag.SiteName = Site.name
到元素。我知道这不会像打印的那样工作,谢谢你这么想

我只是想不出一个方法来添加它。我考虑过ViewData,但可能使用错误,因为我无法用SiteName填充它


有没有办法做到这一点,或者我是否像往常一样考虑所有问题?

最简单的改变是使用以下方法:

<h2>@Html.DisplayFor(m => m[0].Site.SiteName);</h2>
鉴于:

<h2>@ViewBag.SiteName</h2>
您的foreach循环变成:

@foreach (var item in Model.Jobs)

您的模型是一个集合,而不是单个对象,并且集合没有名为Site的属性。不清楚你想展示什么。您的集合是否包含每个站点及其站点名称都相同的对象?
<h2>@ViewBag.SiteName</h2>
public class SiteJobsHistoryModel
{
    public Site Site { get; set;}
    public PaginatedList<Job> Jobs { get; set; }
}
var site = _context.Site.Single(j => j.Site.SiteID==id);
var jobs = from j in _context.Job
    //.Include(j => j.Site) -- this can be removed
    .Include(j=>j.WaterBody)
    .Where(j=>j.Site.SiteID==id)
    .OrderByDescending(j=>j.BookingDate)
    select j;

return View(new SiteJobsHistoryModel
    {
        Site = site,
        Jobs = await PaginatedList<Job>.CreateAsync(jobs.AsNoTracking(), page ?? 1, pageSize)
    });
@Html.DisplayFor(ModelItem=>model.Site.SiteName)
@foreach (var item in Model.Jobs)