1
我在_layout下面的代碼:我如何添加一個外部文件的內容,我的剃鬚刀MVC3佈局文件
@if (ViewBag.PageFormat == "Footer Buttons")
{
}
如果我通過在viewbag「頁腳按鈕」串話,我想將來自外部文件的CSS代碼直接插入到cshtml文件中。就像將外部文件的內容插入到{和}之間的cshtml文件中一樣。
有沒有辦法可以用MVC3做到這一點?
我在_layout下面的代碼:我如何添加一個外部文件的內容,我的剃鬚刀MVC3佈局文件
@if (ViewBag.PageFormat == "Footer Buttons")
{
}
如果我通過在viewbag「頁腳按鈕」串話,我想將來自外部文件的CSS代碼直接插入到cshtml文件中。就像將外部文件的內容插入到{和}之間的cshtml文件中一樣。
有沒有辦法可以用MVC3做到這一點?
如果您的意思是從外部文件加載CSS作爲內嵌CSS代碼,您應該在您的HtmlHelper上創建一個擴展方法。
public static class CssHelper
{
public static MvcHtmlString LoadCss(this HtmlHelper html, string file)
{
string css = System.IO.File.ReadAllText(html.ViewContext.HttpContext.Server.MapPath(file));
TagBuilder styleTag = new TagBuilder("style");
styleTag.Attributes["type"] = "text/css";
styleTag.InnerHtml = css;
return MvcHtmlString.Create(styleTag.ToString());
}
}
,你可以在你的代碼中調用這樣的:
@if (ViewBag.PageFormat == "Footer Buttons")
{
@Html.LoadCss("~/Content/mycss.css");
}
感謝您的詳細答覆。其實我已經有我的外部文件中的CSS標籤。我可以通過將System.IO.File.ReadAllText(html.ViewContext.HttpContext.Server.MapPath(file);直接放入我的剃鬚刀文件中來簡化這一操作嗎? – Beverly 2011-05-05 16:12:12
您可以,但這樣做的設計很糟糕。這種方式將增加代碼的重用,並從你的視圖中分離出複雜的邏輯,以堅持MVC架構 – 2011-05-05 16:17:50
謝謝,我會根據你的建議提出一個簡短的問題,你能解釋一下你說的「你應該創建一個擴展方法在你的HtmlHelper上「,你能解釋我的HtmlHelper文件的位置以及我應該如何調用這個文件:謝謝Bev – Beverly 2011-05-05 16:35:32