ServiceStack 4 Razor:Visual Studio 2013中没有更新2的智能感知

时间:2014-08-20 21:32:14

标签: razor visual-studio-2013 servicestack intellisense servicestack-razor

我正在使用Razor运行Asp.Net主机(ServiceStack.Host.AspNet 4.0.30.0) - ServiceStack 4.0.30.0项目。

.Net Framework目标:4.5.1

该项目编译良好,但我在使用Visual Studio 2013和Update 2的Razor Views中没有得到任何智能感知。

有关如何让intellisense在ServiceStack Razor视图中工作的任何想法? 我的机器也安装了MVC 4和5。

enter image description here

这里也是我的web.config的副本......

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <!--
    For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.

    The following attributes can be set on the <httpRuntime> tag.
      <system.Web>
        <httpRuntime targetFramework="4.5.1" />
      </system.Web>
  -->
  <system.web>
    <httpRuntime />
    <compilation targetFramework="4.5.1" debug="true">
    <buildProviders>
        <add extension=".cshtml" type="ServiceStack.Razor.CSharpRazorBuildProvider, ServiceStack.Razor" />
      </buildProviders></compilation>
    <pages controlRenderingCompatibilityVersion="4.0" />
  <httpHandlers>
      <add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" />
    </httpHandlers></system.web>
  <system.web.webPages.razor>
    <pages pageBaseType="ServiceStack.Razor.ViewPage">
      <namespaces>
        <add namespace="windows_consumer81_demo.Models" />
        <add namespace="windows_consumer81_demo.Models.Scenario" />
        <add namespace="windows_consumer81_demo.Localization" />
        <add namespace="System" />
        <add namespace="ServiceStack" />
        <add namespace="ServiceStack.Html" />
        <add namespace="ServiceStack.Razor" />
        <add namespace="ServiceStack.Text" />
        <add namespace="ServiceStack.OrmLite" />
        <add namespace="windows_consumer81_demo" />
      </namespaces>
    </pages>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc" />
  </system.web.webPages.razor>
  <appSettings>
    <add key="DebugMode" value="true" />
    <add key="unsupportedRedirect" value="unsupported.html" />
    <add key="vs:EnableBrowserLink" value="false" />
  <add key="webPages:Enabled" value="false" /></appSettings>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
    </handlers>
  </system.webServer>
</configuration>

enter image description here

1 个答案:

答案 0 :(得分:2)

我猜它应该工作的方式是你在web.config中添加的所有命名空间都应该有智能感知:

<system.web.webPages.razor>
  <pages pageBaseType="ServiceStack.Razor.ViewPage">
    <namespaces>
    <add namespace="YourNameSpaceHere" />
    <add namespace="SomeServiceStackNameSpace" />
    . . .

然后在.cshtml文件中添加:

@inherits ViewPage<YourModelClassName>

不幸的是,这并不总是有效。它编译,但你没有获得IntelliSense。

但是有一个修复:

.cshtml文件中输入完整的命名空间:

@inherits ServiceStack.Razor.ViewPage<Full.Namespace.Of.Your.Model.Class>

如果您正在使用其他课程,请添加:

@using MyServer.ServiceInterface;
@using MyServer.ServiceModel;

我推荐的另一个技巧是强烈输入您的@Model对象。在@Inherits ViewPage<...>之后添加:

,在顶部
@{
  Your.Class.Name TypedModel = Model; 
}

随意将TypedModel重命名为更好的内容。