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 无法解析母版页内的部分视图的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 中母版页中的视图模型、视图和部分视图之间的关系
如何在Sharepoint中的“外观和感觉母版页”部分下列出母版页