尝试创建返回视图的通用.NET Core MVC控制器时,找不到视图(错误消息:"无法解析视图详细信息")。发生这种情况是因为通用控制器与特定视图无关。应该根据T是什么来挑选视图。我在ASP.NET中看到了一些这样的例子,但是我无法在.NET Core中重新创建它们。
在.NET Core中有解决此问题的好方法吗?
通用控制器示例:
public class ControllerBase<T> : Controller where T : class
{
private IManager<T> _manager;
public ControllerBase( IManager<T> manager)
{
_manager = manager;
}
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}
var result = await _manager.Get(id);
return View(result);
}
}
答案 0 :(得分:0)
正如评论中已经提到的,您可以通过
指定要使用的视图return View("viewName", result);
其中viewName
应该适应您的要求(您的问题可能是类型参数的类型名称?
ViewEngine定位视图可能存在问题,具体取决于您放置视图的位置以及控制器的排列方式。但是你可以通过指定视图的完整路径来解决这个问题:
return View("~/Views/path/to/your/generic/viewName.cshtml", result);
或扩展ViewEngine中的搜索路径,如下所述: Can I specify a custom location to "search for views" in ASP.NET MVC?
答案 1 :(得分:0)
原始代码实际上按预期工作,我的问题是ReSharper报告了一个实际上没有任何错误的问题。我错过了它。
感谢大家的帮助。