13

我想使用MVC4的新「捆綁和縮小」。MVC4綁定/縮小與IE條件註釋

對於IE有條件的評論,我仍舊這樣做:<!--[if lt IE 9]><link href=.../><![endif]--><!--[if lt IE 9]>@Styles.Render("~/foo")<![endif]-->但我似乎沒有得到自動調試/發佈處理。

有沒有內置的方法來做到這一點?其他人如何做到這一點?

編輯:
此外,它將很高興能夠包含<noscript>標記內渲染輸出(用於回退)。

回答

15

直到我找到更好的方法,我做了名爲Bundles適配器類,它具有方法:

public static IHtmlString RenderStylesIe(string ie, params string[] paths) { 
    var tag = string.Format("<!--[if {0}]>{1}<![endif]-->", ie, Styles.Render(paths)); 
    return new MvcHtmlString(tag); 
} 

有腳本的一個類似的方法。一種觀點稱他們爲:

@Bundles.RenderStylesIe("lt IE 9", "~/Content/foo") 
@Bundles.RenderScriptsIe("lte IE 7", "~/Scripts/bar") 

如果有更好的方法,我會很感激的建議。

+0

這種方法的缺點是,如果我有一堆需要「如果lt IE 9」和「if lte IE 7」的樣式或腳本,那麼這些必須放入單獨的捆綁包中,並分別進行渲染。 –

+0

還不確定在'

+0

我發現這個解決方案非常優雅 –

5

即將發佈的1.1-alpha1更新將支持使用Scripts/Styles助手進行自己的標記格式化。

有一個新的DefaultTagFormat屬性,它是默認設置爲:

"<script src="{0}"></script>"

還有一個RenderFormat方法,這需要在標籤格式爲好。你應該能夠用這些控制渲染。在格式化字符串中你想要做什麼?

+0

雖然沒有看到樣本/簽名,但不確定它是否可以與您的新更改一起工作,因爲條件註釋放置在腳本/樣式標籤之外。我在答案中描述的方式並不理想,但它很好地工作。 –

+0

此外,這只是個人喜好!我喜歡使用我的班級調用'Bundles'而不是'Styles'和'Scripts'的能力。它更獨立。你所描述的新方法聽起來非常有用。 –

+2

基本上這個格式就是我們用來生成單個腳本/鏈接標籤的東西。所以你可以這樣做:Scripts.RenderFormat(「<! - [if lte IE 7]> {0} 」,paths) –

-2

我發現另一種是在這裏:https://coderwall.com/p/5zqvkg

它是偏好的問題

(愛尚碼以上 - 這是更清潔和讀取更容易

@Bundles.RenderStylesIe("lt IE 9", "~/Content/foo") 
@Bundles.RenderScriptsIe("lte IE 7", "~/Scripts/bar") 

+0

上面的鏈接發佈了一個在實踐中不起作用的解決方案 – WebDever