获取MVC Views文件夹路径

时间:2015-12-18 17:52:36

标签: angularjs asp.net-mvc routing

我有这个角度模块,想要指向我的Index.cshtml文件作为其模板,如下所示:

angular.module('whatever', [whatever.Provider])
        .config([
            "whateverProvider", function(whateverProvider) {
                whateverProvider
                    .Sample('baseWidget', {
                        title: 'Base Widget',
                        templateUrl: "Views/Home/Index.cshtml", // 404
                        controller: "whateverController",
                    });
            }
        ])

我的索引页面出现了404错误:

GET http://myLocalDomain/projectFolder/Views/Home/Index.cshtml 404 (Not Found)

基本上问题是如何获得Index.cshtml路径?

1 个答案:

答案 0 :(得分:2)

具有所有内容的Views文件夹无法从客户端访问,这是由于Views文件夹中具有web.config处理程序的专用BlockViewHandler文件所致:

 <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>

cshtml文件不应该直接从客户端使用,因为它们可能会暴露一些服务器端代码,这显然可能是一个安全问题。

因此,如果您想将一些模板发送到客户端,您有两个选择:

  1. 创建一个静态html文件并放入一些专用文件夹(类似于默认MVC模板中的Content文件夹)
  2. 创建一个控制器,它将呈现cshtml文件并将它们返回给客户端(这是更昂贵的方式,因为默认情况下静态文件由IIS直接提供而不涉及ASP.NET pipline)。