我想用一些服务器的标签内部Javascript功能:

<%=Model.HtmlProperty%>

在过去的我必须储存这种价值中的一个隐藏的输入域,但是当一个酒店中包含HTML你得问题的特殊人物,例如报价。我想要避免进行编码的控制,以避免出现问题与特殊字符。

Rick Strahl有一个 夫妇 员额 在这个问题在一个网页形式的项目,但是我在寻找一个优雅的解决方案一视项目。

更新:罗伯特*哈维的回答以下建议进行编码html。再次, 不是我想要做的.最后,我想注入html脚本到fckeditor的实例。这必须在javascript。我试图找出如何访问的价值 <%=Model.HtmlProperty%> 内部javascript没有储存编码文本中的一个隐藏的输入单元。

有帮助吗?

解决方案 2

看来我是希望做到的-服务器使用标记的内部javascript是不可能的。我已经储存的串的内隐藏的输入单元,并作为每queen3的评论,似乎,我会必须保持在做什么我已经做。感谢大家的输入。

其他提示

借款从瑞克Strahl的职位,并改变的呼吁签署一点,功能,用于编码javascript string(后改变它变成一个扩展方法Html类)看起来是这样的:

public static string EncodeJsString(this HtmlHelper h, string s)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("\"");
    foreach (char c in s)
    {
        switch (c)
        {
            case '\"':
                sb.Append("\\\"");
                break;
            case '\\':
                sb.Append("\\\\");
                break;
            case '\b':
                sb.Append("\\b");
                break;
            case '\f':
                sb.Append("\\f");
                break;
            case '\n':
                sb.Append("\\n");
                break;
            case '\r':
                sb.Append("\\r");
                break;
            case '\t':
                sb.Append("\\t");
                break;
            default:
                int i = (int)c;
                if (i < 32 || i > 127)
                {
                    sb.AppendFormat("\\u{0:X04}", i);
                }
                else
                {
                    sb.Append(c);
                }
                break;
        }
    }
    sb.Append("\"");

    return sb.ToString();
}

这应该能让你称呼它是这样的:

<%= Html.EncodeJsString(Model.HtmlProperty) %>

使用HTMLHelper写脚本上飞..


public static string WriteLightboxScript(this HtmlHelper helper, string galleryName)
        {
            var builder = new TagBuilder("script");
            builder.MergeAttribute("type", "text/javascript");
            builder.SetInnerText("$(function() {$('a[rel=" + galleryName + "]').lightBox();});");
            return builder.ToString(TagRenderMode.Normal);
        }

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top