如何从.NET Core中的View Component控制器中获取路由值?

时间:2017-04-07 19:18:47

标签: asp.net-core asp.net-core-mvc

我在_Layout.cshtml中有一个视图组件。我的申请的路线为/home/{id}。如何从View Component控制器获取URL路由中的id值?

public class LayoutViewComponent : ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync()
    {
        //how do I get the value of {id} here?

        return View();
    }
}

1 个答案:

答案 0 :(得分:1)

您不希望视图单独从查询字符串中获取所需参数。它可以严格使用视图。

相反,您可以从父级传递Id

// Parent's Action Method
public IActionResult ParentActionMethod(int id)
{
    // You could use strongly typed model
    ViewBag.Id = 1;
    return View(); 
}    

// Parent's View
@await Component.InvokeAsync("Layout", new { Id = ViewBag.Id })

// View Component
public class LayoutViewComponent : ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync(int id = 10)
    {
        return View();
    }
}