开发者

Working effectivly with HTML in embeed web-server inside a .net/wpf-app

开发者 https://www.devze.com 2023-01-14 05:47 出处:网络
I have a pretty complex composite application (.NET/WPF/Prism). It runs on some kind of embedded devices (with full fledge window 7), let\'s call them \"kiosks\". I need to al开发者_如何学Pythonlow re

I have a pretty complex composite application (.NET/WPF/Prism). It runs on some kind of embedded devices (with full fledge window 7), let's call them "kiosks". I need to al开发者_如何学Pythonlow remote control for the applicaton. i.e. it should have an embedded web-server which will provide some information via http/html for remote control (checking status, logs, etc).

So in some application's module I need to compose HTML to return it. This seems to be pretty tedious. It looks like:

using (Stream ostr = ...)
using (TextWriter tw = new StreamWriter(ostr))
{
    tw.WriteLine("<html>");
    tw.WriteLine("<head>");
    tw.WriteLine("<title>Web Console</title>");
    tw.WriteLine("<meta http-equiv=\"refresh\" content=\"2\" />");
}

I want to simplify HTML creation process. So I'm looking for some kind of .NET HTML DOM library. And can't find decent one. Only one I've found so far - HTML Agility Pack. It looks cool but I believe it targets a bit other use-case (load some HTML and search with xpath/linq). But I need just compose HTML, not parse, not query. I'd expect from a library API similar to System.Xml.Linq.

Something like this:

HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.Head.AddScript(ScriptLanguages.JavaScript, "http://localhost/scripts/jquery.js");
htmlDoc.Body.Elements(
  new HtmlDiv {
    Style="align:center", 
    Content = new []{new TextBlock("Hi")} }, 
  new HtmlDiv (
    new HtmlLabel(text: "StartDate", nameFor: "dtStartDate"),
    new HtmlTextBox(clintName: "dtStartDate", style: "width:100px")
  )
);

Another posibility that comes to my mind is to use some kind of templating engine. But I have no idea which one will work seamessly with embedded web-server.

I'm open for you thoughts, thanks in advance.

p.s. If you wonder "Embedded web-server" is http://www.codeproject.com/KB/IP/CSharpEmbeddedHTTPServer.aspx


I don't know about you, but the HTML seems simpler to write read and understand. What benefit are you expecting by generating html in the way you suggested?

As to a template engine, you can easily create one yourself. Create an html page (one or more) with the theme you want. Add tags like %%title%% %%content%%, load the file do a regexp replacement, then serve the html. Wrap it up in a class and you have a very simple, flexible and easy to maintain solution.

0

精彩评论

暂无评论...
验证码 换一张
取 消