Создать HTML-страницу программно в C # - PullRequest
8 голосов
/ 02 июня 2009

Мне было интересно: есть ли способ создать файлы HTML программно в C #, как вы можете сделать с XML? У меня консольное приложение, поэтому, возможно, некоторые опции недоступны. По сути, я хотел бы сделать что-то умнее, чем просто построить большую строку.

Возможный сценарий:

Вместо записи:

     string html="<html><head>Blah</head><body>{0}</html>", myotherstring

Я бы хотел работать как в XML

     XmlTextWriter w = new XmlTextWriter(xml_file_path + xml_file_name,
                                        System.Text.Encoding.UTF8);

     w.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");

     // construct xml
     XmlElement root = xmlDoc.CreateElement("element");

     ...

     xmlDoc.Save(w);
     w.Close();

Извиняюсь за наивный вопрос.

Ответы [ 5 ]

7 голосов
/ 02 июня 2009

Не забывайте: вы можете генерировать XHTML так же легко, как обычный XML, используя подход XmlTextWriter.

6 голосов
/ 02 июня 2009

Вы можете использовать NVelocity. Это порт .Net системы шаблонов Java Velocity. API не будет похож на XmlWriter. Вместо этого вы напишите текстовый файл на простом языке сценариев, поместите ваши объекты в «контекст», а затем объедините шаблон и контекст для создания файла HTML.

  1. NVelocity
  2. Руководство по синтаксису скорости
2 голосов
/ 19 апреля 2011

Я понимаю, что этот вопрос устарел, однако недавний выпуск движка представления ASP.Net MVC 3 Razor теперь дает вам возможность использовать этот же движок представления Razor для генерации HTML для любых целей.

См. Hosting Razor вне ASP.Net для получения руководства о том, как это сделать.

2 голосов
/ 16 марта 2011

Вы можете использовать сторонние библиотеки с открытым исходным кодом для создания строго типизированного проверенного (X) HTML, например CityLizard Framework или Sharp DOM.

Например

html
    [head
        [title["Title of the page"]]
        [meta_(
            content: "text/html;charset=UTF-8",
            http_equiv: "Content-Type")
        ]
        [link_(href: "css/style.css", rel: "stylesheet", type: "text/css")]
        [script_(type: "text/javascript", src: "/JavaScript/jquery-1.4.2.min.js")]
    ]
    [body
        [div
            [h1["Test Form to Test"]]
            [form_(action: "post", id: "Form1")
                [div
                    [label["Parameter"]]
                    [input_(type: "text", value: "Enter value")]
                    [input_(type: "submit", value: "Submit!")]
                ]
            ]
            [div
                [p["Textual description of the footer"]]
                [a_(href: "http://google.com/")
                    [span["You can find us here"]]
                ]
                [div["Another nested container"]]
            ]
        ]
    ];
0 голосов
/ 02 июня 2009

То, что я сделал несколько месяцев назад, у меня был файл asp.net (aspx), сохраненный как шаблон в текстовом файле, всякий раз, когда пользователю требовалась новая страница, я просто копировал этот шаблон в указанную пользователем папку измените расширение .txt на .aspx и программно добавьте несколько опций в зависимости от потребностей пользователя. Это была простая страница, хотя. Конечно, чем сложнее вы идете, тем сложнее будет код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...