asp:literal控件是否有自动格式化?

时间:2012-11-07 16:03:50

标签: c# asp.net

有没有办法自动将string格式插入JavaScript代码?

假设您的页面中有此内容:

<script type="text/javascript">
    var strvar = <asp:Literal runat="server" id="ltrStrvar"></asp:Literal>;
</script>

在您的服务器端代码中:

protected void Page_Load(object sender, EventArgs e) {
    ltrStrvar.Text = "hello \"world\"";
}

有没有办法自动让它逃脱字符串并用引号括起来以便无错误地插入JavaScript,所以我所要做的就是设置Text属性任意一个字符串?我知道如何手动,但正在寻找更优雅的解决方案。

2 个答案:

答案 0 :(得分:2)

您可以创建一个自定义LiteralWithQuotationMarks用户控件,该控件在内部使用Literal控件,如果它们丢失则用引号括起来。

答案 1 :(得分:0)

你可以这样做:

public string sanitizeJavascriptString(string dirtyInput)
{
    return dirtyInput.Replace("\\", "\\\\")
        .Replace("\"", "\\\"")
        .Replace("'","\\'");
}

我不知道是否存在逃生功能,但我对此表示怀疑。我也不是100%确定还有什么需要转义,但我想如果你知道它们是什么就可以添加其他角色。