在ViewComponent中返回共享错误视图

时间:2017-02-13 10:44:40

标签: c# asp.net-core asp.net-core-viewcomponent

ViewComponent调用View并传入参数。

@await Component.InvokeAsync("StudentDetails", new { id = 1 });

StudentDetailsViewComponent课程中,我必须确保学生(id = 1)在返回视图之前存在于DB中。如果是id == nullstudent == null,则会返回错误视图。但是,我们在控制器中使用的常用NotFound()不能在这里使用。

我的问题是:有没有正确的方法可以返回可以在所有其他ViewComponents之间共享的错误页面?

我现在正在做的是在每个Error.cshtml文件夹下创建一个ViewComponent,以便可以返回它。

public async Task<IViewComponentResult> InvokeAsync(int? id)
{
    if (id == null)
    {
        return View("Error");
    }

    var student = await _context.Students
               .AsNoTracking()
               .SingleOrDefaultAsync(i => i.ID == id);

    if (student == null)
    {
        return View("Error");
    }

    return View(student);
}

1 个答案:

答案 0 :(得分:1)

您可以使用相对路径,例如

return View("../../Error");

return View("../../../Shared/Error");