在ASP.NET Core MVC中显示当前视图的备用搜索路径

时间:2018-02-07 18:00:00

标签: razor asp.net-core-mvc

出于调试目的,我想知道可以使用的其他视图路径,而不是最终被渲染的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放在我认为应该搜索但不是的位置。

1 个答案:

答案 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>