Resharper 无法解析母版页内的部分视图

Posted

技术标签:

【中文标题】Resharper 无法解析母版页内的部分视图【英文标题】:Resharper cannot resolve partial view inside master page 【发布时间】:2014-03-01 02:40:03 【问题描述】:

我已从 vs2012 pro 上的 ReSharper 7 升级到 vs2013 pro 上的 ReSharper 8.1,ReSharper 现在警告我很多部分视图无法解决。 这似乎只是发生了:

在 ASP 母版页中(即不是 razor) 当 .ascx 分部与分部位于同一控制器文件夹中时

例如Home.Master,位于 ~/Views/Home/Home.Master 渲染 UserProfile.ascx,位于 ~/Views/Home/UserProfile.ascx。 <%: html.RenderPartial("UserProfile") %><%: Html.RenderPartial("~/Views/Home/UserProfile.ascx"%> 都被 ReSharper 标记为无效。

此外,当我仅按名称引用时,~/views/shared 文件夹中的共享部分似乎可以正常提取:

但是,通过路径引用视图似乎不起作用:

(注意。两张图片都是在 Home.Master 中拍摄的,在 ~/Views/Home 中)

当我运行应用程序时,部分工作正常,所以这似乎是 ReSharper 8.1 中的一个变化。有什么办法可以解决这个问题吗?

【问题讨论】:

这对于 resharper 团队来说似乎是一个好问题,而不是 ***。 堆栈溢出帮助主题特别提到涵盖“程序员常用的软件工具”的问题是合适的。虽然我认为这是 ReSharper 的一个错误,但我希望这实际上是我做错了 - 因此询问堆栈溢出 我遇到了类似的问题,但对我来说,这只是在 Razor 页面中。更令人担忧的是,在 JetBrain 的论坛上似乎没有任何关于它的信息。如果我找到解决方案,我会在这里发回。 它很容易在一个简单的项目中重现,所以我将它作为一个错误提交给 JetBrains。 【参考方案1】:

这是 ReSharper 中的一个错误。

目前最好的办法是将其设置为忽略此类错误。

您可以通过从左侧的“红灯泡”中选择“检查选项”并将其设置为另一个选项来执行此操作。希望它会尽快修复!

编辑:请参阅此问题单。 http://youtrack.jetbrains.com/issue/RSRP-395642

【讨论】:

5 年后它看起来会在下一个版本中修复! (2018.2)【参考方案2】:

通过使用相对引用,我有一个更简单的解决方法。因此,在我的情况下,我在另一个项目中有一个视图(如果您尝试退出当前项目而不以正斜杠“/”开头,您将收到类似 this 的警告。对于您的问题,请更改以下行读取

<%Html.RenderPartial("UserProfile")%>

<%Html.RenderPartial("../../Views/Home/UserProfile")%>

<%Html.Partial("../../Views/Home/UserProfile.cshtml")%>

不确定这是否是您解决方案中的确切路径,但希望您能理解我的意思 - 您不能使用波浪号 (~) 符号。您必须使用 HTML 的导航符号。显然不理想,但我敢说这比改变检查规则要好。

另外 - 如果您确实需要删除检查,只需添加行将其注释掉

// ReSharper disable once Mvc.PartialViewNotResolved
... // code goes here

// ReSharper disable Mvc.PartialViewNotResolved
... // code goes here 
// ReSharper restore once Mvc.PartialViewNotResolved

【讨论】:

但是如果你决定移动东西,这样你会很头疼,因为你的路径配置不是在一个地方,而是分散在所有(部分)视图中【参考方案3】:

我今天从 ReSharper 2018.2.3 收到此错误是什么时候发生的:

@Html.Partial("_StatusMessage", Model.StatusMessage)

我还注意到来自IHtmlHelper.Partial 方法本身的警告:

使用 IHtmlHelper.Partial 可能会导致应用程序死锁。考虑使用 Tag Helper 或 IHtmlHelper.PartialAsync。

所以我把代码改成:

<partial name="_StatusMessage" model="Model.StatusMessage" />

这为我解决了问题。

【讨论】:

以上是关于Resharper 无法解析母版页内的部分视图的主要内容,如果未能解决你的问题,请参考以下文章

如何将母版页和 css 应用于子页

ASP.NET MVC 中母版页中的视图模型、视图和部分视图之间的关系

如何在Sharepoint中的“外观和感觉母版页”部分下列出母版页

VS2005 使用了母版页技术,可是点运行后母版页的设计内容无法显示,特别是图片就是空白的,该怎么解决呢

Resharper 说“无法解析视图”

引导下拉菜单在母版页中不起作用