Orchard工作流程 - 在textarea中保留文本格式

时间:2018-03-21 12:21:19

标签: orchardcms

我有一个工作流程,在提交包含textarea的表单时发送电子邮件。

我的问题是,在发送电子邮件时,输入到textarea的内容格式会丢失(例如回车/段落)。

有没有办法像用户输入的那样完全维护内容?目前我正在使用它来输出电子邮件活动中的内容:

<p>Message:<br/>
{Request.Form:Message}</p>

正在运行Orchard 1.10.2。任何帮助非常感谢!

1 个答案:

答案 0 :(得分:1)

修改

如果您使用动态表单,则此语法将起作用:

FormSubmission.Field:Message.LineEncode

如果它是您自己的表单,我担心它看起来像是Orchard中的一个错误,其中Request.Form的链接值实际上是检索命名查询字符串参数。要对此进行排序,您必须编辑源文件:Orchard.Tokens.Providers.RequestTokens

添加新方法:

private static Tuple<string, string> FilterChainParam(string token, string tokenType) {
    if(token.StartsWith(tokenType, StringComparison.OrdinalIgnoreCase)) {
        return FilterChainParam(token);
    }

    return null;
}

然后在Evaluate方法中替换此行:

.Chain(FilterChainParam, "Text", (token, request) => request.QueryString.Get(token))

这些行:

.Chain((token) => FilterChainParam(token, "QueryString"), "Text", (token, request) => request.QueryString.Get(token))
.Chain((token) => FilterChainParam(token, "Form"), "Text", (token, request) => request.Form.Get(token))
.Chain((token) => FilterChainParam(token, "Route"), "Text", (token, request) => GetRouteValue(token, request))

不是特别漂亮,但它有效。您现在可以使用如下(注意表单字段周围的括号)

<强> ORIGINAL

您的表单将通过电子邮件客户端将忽略的新行(\ n)来实现。您需要使用换行符替换它们。幸运的是有人想到了这一点,在Orchard中有一个令牌:LineEncode。将您的电子邮件活动更改为:

<p>Message:<br/>
{Request.Form:(Message).LineEncode}</p>