【问题标题】:Visual studion 2013 (pro) Razor IntelliSense not working for dynamic objectsVisual Studio 2013 (pro) Razor IntelliSense 不适用于动态对象
【发布时间】:2016-10-26 08:44:47
【问题描述】:

上周我在使用 Visual Studio 2013 专业版时遇到了一些问题,这意味着我必须重新安装该软件。我已将所有内容都设置好,并且我注意到 IntelliSense 在我的剃刀文件中无法用于 umbraco 7 项目中的动态对象。我可能是错的,但我可以发誓这在重新安装 VS 之前曾经工作过。

在 umbraco razor 视图中考虑以下代码

    @inherits Umbraco.Web.Mvc.UmbracoTemplatePage

@{
    //gets the home page using doc type alias (root node)
    var siteRoot = Model.Content.AncestorOrSelf("homePage");
    //gets the about us page using doc type alias
    var portfolioPage = siteRoot.Descendant("portfolioPage");
    //gets the gallery page using doc type alias
    var galleryPage = siteRoot.Descendant("galleryPage");

    var imagesToDisplay = portfolioPage.HasValue("imageAmount") ? portfolioPage.GetPropertyValue<int>("imageAmount") : 2;
}

    <!-- .container -->
    <div class="container">
        <div class="post-heading-center">
            <h2>@(portfolioPage.HasValue("heading") ? portfolioPage.GetPropertyValue("heading") : portfolioPage.Name)</h2>
        </div>
        <nav>
            <a href="#">All Work</a>
            <!--get gallery albums-->
            @foreach (var type in galleryPage.Children)
            {
                var galleryAlbum = Umbraco.Media(type.GetPropertyValue<int>("image"));

                if (galleryAlbum.ChildrenAsList.Count() != 0)
                {
                  <a href="#" data-filter=".class-@type.Id">@type.Name</a>
                }
            }
        </nav>
    </div>

使用 Visual Studio IntelliSense 时,我没有得到任何选项和一条消息,通知我它是一个动态表达式,它将在运行时解决。 IntelliSense 似乎不存在。

我安装了 resharpher 终极版,当我转到 resharper > 选项并切换到 resharper IntelliSense 时,我从对象中获取成员以及我在其他地方使用过但 resharper 不太确定的成员。

我知道 ChildrenAsList 成员(这是我需要的)可用于动态 galleryAlbum 对象,但为什么我的 IntelliSense 不告诉我这一点。

我注意到的另一件事是,我的 IntelliSense 会不断停止工作,无论它处于 vs 还是 resharper 模式,这也让我相信这个安装出了问题。要修复我要么必须关闭代码文件或项目本身。因此,考虑到上述情况,我有以下问题

  1. vs IntelliSense 的标准行为是否无法使用 umbraco razor 视图中的动态对象?
  2. 为什么在使用 resharper IntelliSense 时会显示基础对象成员 而不是在使用 VS IntelliSense 时?
  3. 为什么所有 IntelliSense 总是停止工作?

如果有人对上述内容有任何信息,那么我将非常感激。我试过了

  1. 通过导入和导出向导重置所有用户设置
  2. 在语句中检查了“自动列出成员”和“参数信息” 在 vs 选项中完成

运气不好。

我也向 umbraco 社区 https://our.umbraco.org/forum/using-umbraco-and-getting-started/80911-razor-visual-studio-intellisense-not-working-for-dynamic-objects 提出了这个问题

【问题讨论】:

  • dynamic = 没有智能感知,这很正常

标签: c# visual-studio razor intellisense umbraco7


【解决方案1】:

动态对象可以是任何东西,它们在运行时被解析。

尝试使用Umbraco.TypedMedia 来获取强类型模型,而不是使用Umbraco.Media。这样您可以使用智能感知

【讨论】:

  • 干杯伙伴,这是一个有用的提示:)
  • 没问题!顺便说一下,Umbraco.Content 和 Umbraco.Member 也是如此。
猜你喜欢
  • 2023-03-30
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多