2013-07-16 61 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