出于调试目的,我想知道可以使用的其他视图路径,而不是最终被渲染的Razor视图。通常不难猜测,但我使用的是可以动态改变搜索路径的自定义IViewLocationExpander
。是否有可能在ASP.NET Core MVC中获取该信息以进行任何视图渲染尝试?
与此问题类似,Show current search paths for a view,但对于ASP.NET Core。
我的具体情况是调用Html.EditorFor(m => m.UserRole)
,最终呈现我的EditorTemplates / Object.cshtml文件,而不是我在非标准位置自定义IViewLocationExpander
的EditorTemplates / UserRole.cshtml应该浮出水面显然我把我的UserRole.cshtml放在我认为应该搜索但不是的位置。
答案 0 :(得分:0)
以下内容近似于对Html.EditorFor
的调用在幕后的作用,并适用于我目前的情况,但我希望其他人可以提供此问题的一般解决方案。
@inject Microsoft.AspNetCore.Mvc.ViewEngines.ICompositeViewEngine ViewEngine
<pre>@string.Join("\n", ViewEngine
.FindView(ViewContext, "EditorTemplates/" +
(ViewData.ModelMetadata.TemplateHint ?? ViewData.ModelMetadata.DataTypeName ?? ViewData.ModelMetadata.ModelType.Name), isMainPage: false)
.SearchedLocations)</pre>