I was looking for something similar to Velocity's #include for ASP.NET. <% Response.WriteFile([filename]); %> works well, but a .NET control for this could be nice. Here is my attempt (MIT license):
using System.IO;
using System.Web;
using System.Web.UI;
namespace FooControls
{
public class LiteralContentFromFile : Control
{
public string Path { get; set; }
protected override void Render(HtmlTextWriter writer)
{
var server = HttpContext.Current.Server;
var physicalPath = server.MapPath(Path);
var fileContents = File.ReadAllText(physicalPath);
writer.Write(fileContents);
}
}
}
Usage in an .aspx file (WebForms or ASP.NET MVC):
<%@ Register TagPrefix="foo" Namespace="FooControls" Assembly="FooControls" %> ... <foo:LiteralContentFromFile runat="server" Path="~/path/to/file" />
Edit: subclassing System.Web.UI.Control instead of System.Web.UI.WebControls.WebControl which added unnecessary and unwanted behavior (for example, wrapped the output with <span>).
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.