2013-07-16 39 views
2

我正在为ASP.Net MVC网站创建演示部分。我希望能够通过点击页面上的按钮来显示其中一个页面的部分视图的Razor标记。为此,我将不得不直接从cshtml文件中获取Razor标记,并通过模型将其传递给视图。如何阅读cshtml文件的原始未呈现内容

如何做到这一点(特别是获取原始的,未渲染的剃刀标记)?我试图打开一个文件流的局部视图的CSHTML文件,但该文件路径的看法是不直观的对我说:

FileStream fs = new FileStream("{what goes here?}/Views/Demos/SomePartialView.cshtml", FileMode.Open); 
+0

它不应该是域? – gdoron

+0

你有没有试过〜或者什么都没有'{这里有什么?}'? – Omada

+0

通过Razor引擎访问视图时,可以使用'“〜/ Views/...”;然而,这不是一个有效的文件系统路径,所以不起作用。 –

回答

6

尝试Server.MapPath

var localPath = Server.MapPath("~/Views/Demos/SomePartialView.cshtml"); 
+0

我认为这是正确的。只需要澄清一下:你正在使用'System.Web.HttpContext'而不是'Controller'类的'HttpContext'属性? –

+0

@SteveKonves:不,使用控制器的HttpContext。我从一个普通的ASP.NET(没有MVC)应用程序复制代码。对于那个很抱歉。 –

+2

您甚至不必在控制器操作中使用HttpContext,只需使用Server.MapPath而不使用HttpContext。 – ataravati