首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么MarkdownSharp不编码我的HTML?

为什么MarkdownSharp不编码我的HTML?
EN

Stack Overflow用户
提问于 2011-02-01 15:12:31
回答 3查看 3K关注 0票数 10

在我看来,Markdown的一个更大的目标是防止用户直接键入格式可能错误的HTML。

好吧,在MarkdownSharp,这对我来说不太合适。

当您在“abc”之后有额外的行中断时,此示例工作正常.

但当断线不存在的时候,我认为应该还是HtmlEncoded,但这不是发生在这里.

在幕后,呈现的标记来自iframe。这就是它背后的密码..。

代码语言:javascript
复制
<% 
var md = new MarkdownSharp.Markdown();
%>
<%= md.Transform(Request.Form[0]) %>

我肯定遗漏了什么。哦,我使用的是v1.13 (本文的最新版本)。

编辑(这是对StackOverflow实现的测试)

abc

这不应该是红色的

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-16 21:04:44

由于StackOverflow实现包含了相当多的自定义,因此测试和计算可能会花费时间,因此我决定转向另一个方向。

我创建了自己的简化标记语言,这是Markdown的一个子集。开放源码项目位于http://ultralight.codeplex.com/,您可以在http://www.bucketsoft.com/ultralight/上看到一个工作示例。

该项目是一个完整的ASP.NET MVC解决方案和一个Javascript编辑器。与MarkdownSharp不同的是,安全的HTML是得到保证的。Javascript解析器同时使用客户端和服务器端来保证一致的标记(特别感谢侏罗纪Javascript编译器)。只需为该解析器维护一个代码基是一件很好的事情。

虽然这个项目还在测试阶段,但我已经在我自己的网站上使用了它,而且到目前为止它似乎运行得很好。

票数 2
EN

Stack Overflow用户

发布于 2011-03-17 20:19:48

对于那些不想使用Steve的自定义解决方案的人,我已经向MarkdownSharp guys:http://code.google.com/p/markdownsharp/issues/detail?id=43提交了一个问题和一个拟议的解决方案。

如果您下载我附加的Markdown.cs文件,您将找到一个新的选项,您可以设置。它将阻止MarkdownSharp在代码块中重新编码文本。

只是不要忘记在将输入传递给标记之前,而不是之后,对其进行HTML编码。

另一种解决方案是像堆栈溢出一样使用白名单HTML标记。当你把你的内容传递给减价后,你就会这样做。

有关更多信息,请参见此:http://www.CodeTunnel.com/blog/post/24/mardownsharp-and-encoded-html

票数 3
EN

Stack Overflow用户

发布于 2011-02-01 20:29:42

也许我不理解?如果你要在Markdown中启动一个新的代码块,在它的所有类型中,您确实需要一个双换行和四个空格缩进--在我需要处理的任何渲染器中,一个换行符都不能用。

代码语言:javascript
复制
abc -- Here comes a code block:

    <div style="background-color: red"> This is code</div>

屈服:

abc --这里有一个代码块:

代码语言:javascript
复制
<div style="background-color: red"> This is code</div>

从您所说的话来看,MarkdownSharp似乎对这条规则做得很好,所以只有一个换行符(但缩进):

代码语言:javascript
复制
 abc -- Here comes a code block:
     <div style="background-color: red"> This should be code</div>

我们搞得一团糟,而不是代码块:

这里有一个代码块:这应该是代码

我认为StackOverflow正在剥离<div>标记,因为他们认为评论不应该有分割和类似的东西。(?)(一般来说,他们必须做很多其他的处理,不是吗,例如得到语法高亮显示等等?)

编辑:,我认为人们对Markdown实现的期望是错误的。例如,正如我下面所说的, 没有“无效标记”这样的东西。它不是一种编程语言,也不是任何类似的语言。我已经验证了,我从命令行中获得的所有三个标记实现都可以毫无差别地‘转换’随机的.js和.c文件,或者插入到其他合理的标记中的那些--还有内插的zip文件和其他胡说八道--变成浏览器根本不介意显示的有效html --尽管它是鸡抓痕。如果您想排除某些东西,例如在wiki程序中,您当然要做一些进一步的事情,当然,就像大多数使用wiki程序的标记程序所做的那样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4864255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档