Asp.net mvc ASP.NET MVC:如何绕过MVC应用程序中的控制器?

Asp.net mvc ASP.NET MVC:如何绕过MVC应用程序中的控制器?,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我有一个.NETMVC应用程序。到目前为止,每个页面都是通过控制器访问的 现在我想直接访问一些cshtml文件,例如 虽然有.cshtml文件扩展名,但这些只是纯html片段 如何在不通过任何控制器的情况下访问这些文件 感谢并问候。我可能会制作一个控制器,该控制器的操作接受视图名称,从文件系统获取视图,并将其作为带有mimetypetext/html的FileResult返回。您可能希望控制器有一个硬编码的html片段文件白名单,以减少人们浏览您的文件夹结构的可能性 您还可以研究配置IIS以服

我有一个.NETMVC应用程序。到目前为止,每个页面都是通过控制器访问的

现在我想直接访问一些cshtml文件,例如

虽然有.cshtml文件扩展名,但这些只是纯html片段

如何在不通过任何控制器的情况下访问这些文件


感谢并问候。

我可能会制作一个控制器,该控制器的操作接受视图名称,从文件系统获取视图,并将其作为带有mimetype
text/html
FileResult
返回。您可能希望控制器有一个硬编码的html片段文件白名单,以减少人们浏览您的文件夹结构的可能性


您还可以研究配置IIS以服务于某些目录中的.cshtml文件,但我更关心的是,使用该方法会意外打开太多的文件

既然它们只是html,为什么不使用.html扩展名并直接调用:www.domain.com/file/abc.html?这些文件是在另一个项目中创建的,我无法修改它们。谢谢你叫我进来!您可以将该.cshtml文件的内容复制到自己的文件中,也可以使用@Html.Partial('ViewName')将其作为另一个cshtml文件的一部分呈现。此问题的答案可能对您有所帮助:。另外,请参阅该帖子上的相关问题。史蒂夫,谢谢你为我指出解决方案。我按你说的做了。干杯@奇怪的是,您可能希望在action方法上添加一个
OutputCacheAttribute
(),这样您就不会在每个请求上构建和运行一个完整的控制器,而真正的请求是一个静态文件。Steve,感谢您跟踪我。我在控制器中使用“returnnewfilepathresult(fileName,“text/hmtl”)”进行返回。我想添加编码。有什么建议吗?html代码段有西班牙文字符,在页面中看起来失真。我确实返回了新的FilePathResult(fileName,“text/html;charset=utf-8”),但它仍然不起作用。@curious1,我想你可以设置
Response.ContentEncoding=Encoding.UTF8
。但是,这可能无法解决您的问题-您可能需要将西班牙语字符转义为HTML实体()