2013-12-11 23 views
3

渲染視圖時,在我的剃鬚刀看法指定樣式表的媒體,我有:與MVC ViewContext

<link rel="stylesheet" href="css/print-layout.css" media="print" type="text/css" /> 

打印頁面時正確應用該樣式表。

然而,在某些情況下,我使用的東西像我渲染視圖的HTML字符串:

var razorViewEngine = new RazorViewEngine(); 
ViewEngineResult viewResult = razorViewEngine.FindView(context, viewName, "_Layout", false); 
// ... 
var writer = new System.IO.StringWriter(); 
var viewContext = new ViewContext(context, viewResult.View, viewData, tempData, writer); 
viewResult.View.Render(viewContext, writer); 
return writer.ToString(); 

在這樣做時,我怎麼可以指定介質類型,使「打印佈局。上面列出的「css」樣式表被應用?

+0

澄清:我想渲染視圖,就好像它是非屏幕媒體類型 – DaveD

回答

1

打印時,查看用戶代理(瀏覽器)應用打印樣式表。

您可以更改 media="print"media="all"有它適用於所有媒體類型。

更新

你爲什麼不嘗試設置你想在應用的樣式表渲染時​​間?

嘗試(RenderPartial)傳遞一些數據,以便您可以有條件地使用「打印」或「全部」。

更新2: HTML輸出不會有區別,只有CSS規則適用於人類查看的實際呈現頁面。或者你是否想看看風格是應用於最終呈現的頁面DOM而不是HTML的樣子?

+1

謝謝,但這並不回答這個問題。我不希望樣式表應用於所有媒體類型,但我希望能夠在代碼中呈現視圖,就好像它將爲該媒體類型渲染一樣。 – DaveD

+0

你爲什麼不在代碼中設置樣式表?上面更新了我的答案。另見http://stackoverflow.com/questions/7768827/rendering-partial-view-in-code-mvc-razor http://stackoverflow.com/questions/4607843/razor-if-else-conditional-operator-syntax http://stackoverflow.com/questions/6295659/passing-parameters-in-partial-views-mvc3-razor http://stackoverflow.com/questions/6549541/how-to-pass-parameters-to-a-partial -view-in-asp-net-mvc –

+1

將此視爲單元測試。我根本不想觸摸視圖頁面。我只是想讓這一小段代碼說「嘿,頁面,你已經知道如何爲自己應用合適的樣式,所以讓我們假裝我正在打印(或者移動,或者正常的屏幕)。」Gimmie你的HTML。「 – DaveD