我如何添加一个外部文件的内容,我的剃须刀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"); 
} 
+0

感谢您的详细答复。其实我已经有我的外部文件中的CSS标签。我可以通过将System.IO.File.ReadAllText(html.ViewContext.HttpContext.Server.MapPath(file);直接放入我的剃须刀文件中来简化这一操作吗? – Beverly 2011-05-05 16:12:12

+0

您可以,但这样做的设计很糟糕。这种方式将增加代码的重用,并从你的视图中分离出复杂的逻辑,以坚持MVC架构 – 2011-05-05 16:17:50

+0

谢谢,我会根据你的建议提出一个简短的问题,你能解释一下你说的“你应该创建一个扩展方法在你的HtmlHelper上“,你能解释我的HtmlHelper文件的位置以及我应该如何调用这个文件:谢谢Bev – Beverly 2011-05-05 16:35:32