Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于为ASP.NET MVC创建HTML的类XElement API_C#_.net_Html - Fatal编程技术网

C# 用于为ASP.NET MVC创建HTML的类XElement API

C# 用于为ASP.NET MVC创建HTML的类XElement API,c#,.net,html,C#,.net,Html,我想封装一些HTML创建逻辑(例如,最终用于ASP.NET MVC页面)。我可以用普通C#中的结构化API实现这一点吗 我希望避免容易出错的基于字符串的构造,在这种构造中,我需要手动构建标记并转义正确的字符串,因为这让我觉得维护起来更加困难,并且可能导致html注入漏洞。类似于XElementAPI(例如),但用于html生成:一个至少考虑良好格式并避免样板文件的API 这样的API存在吗?安全方便地生成html片段的最佳方法是什么 ASP.NET MVC中有一个内置的HTML生成器。它被称为,

我想封装一些HTML创建逻辑(例如,最终用于ASP.NET MVC页面)。我可以用普通C#中的结构化API实现这一点吗

我希望避免容易出错的基于字符串的构造,在这种构造中,我需要手动构建标记并转义正确的字符串,因为这让我觉得维护起来更加困难,并且可能导致html注入漏洞。类似于
XElement
API(例如),但用于html生成:一个至少考虑良好格式并避免样板文件的API


这样的API存在吗?安全方便地生成html片段的最佳方法是什么

ASP.NET MVC中有一个内置的HTML生成器。它被称为,并在内部由所有用户使用

例如,生成以下HTML:

<div id="someId" class="someClass">
  <p class="paragraph">Some text</p>
  <input type="button" value="Click"/>
</div>
在我们的项目中,我们通常在
TagBuilder
周围创建一个薄薄的流体包装器,类似于使it'sapi更具流动性

如果可以使用一些第三方库,并且需要一些高级功能,您可以查看:

  • -可于
  • -可于

您是否在
System.Web.Mvc.dell
中看到了
System.Web.Mvc.TagBuilder
类?该类由使用。请参见@nemesv:您有示例吗?这听起来像是一个答案…:-)@L.B.我对HtmlAgilityPack有很多经验,但它不适合这个。车相当多,相当慢,而且相当大。它还用于(更复杂的)解析凌乱的html,而不是生成干净的html。@eamonnerbanne我已将我的评论扩展为一个答案:)
var div = new TagBuilder("div");
    div.GenerateId("someId");
    div.AddCssClass("someClass");
var p = new TagBuilder("p");
    p.AddCssClass("paragraph");
    p.SetInnerText("Some text"); //HtmlEncode the parameter
var button = new TagBuilder("input");
    button.MergeAttribute("type","button");
    button.MergeAttribute("value","click");

div.InnerHtml = (p.ToString() + button.ToString());