您知道我是否可以从asp.net核心中的ViewComponent调用控制器? 我正在尝试这样的事情
public MyViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return (IViewComponentResult) new RedirectToActionResult
("actionName", "controllerName", null);
}
}
但我显然得到了InvalidCastException。
答案 0 :(得分:0)
您知道我是否可以从asp.net核心中的ViewComponent调用控制器?我正在尝试这样的事情
return (IViewComponentResult) new RedirectToActionResult("actionName", "controllerName", null);
做你想做的事是没有意义的。
控制器处理HTTP请求; ViewComponent不处理HTTP请求(see this section)。事实上,你更有可能从一个从ViewComponent调用Controller的Controller调用一个ViewComponent。
您尝试使用的RedirectToActionResult
会尝试将现有HTTP请求从网址重定向到其他网址。由于ViewComponent不处理HTTP请求,因此无需重定向,RedirectToActionResult
不合适。
如果确实想要从ViewComponent调用Controller,那么您有两个选择:
在ViewComponent中,创建Controller的实例并直接调用其中一个Actions。这将有点奇怪,因为您必须手动管理控制器上下文和依赖项。
在ViewComponent中,获取HttpClient的实例,并使用它来向Controller Action发出HTTP请求。