C#String.Format - 输入字符串无效

时间:2011-08-17 17:50:54

标签: c# string.format

我有一个像这样的MVC3 HtmlHelper扩展名:

public static MvcHtmlString ShowInfoBar(this HtmlHelper helper, string message, InfoMessageType messageType)
    {
        return MvcHtmlString.Create(String.Format(@"<script type=""text/javascript"">$(document).ready(function () { gtg.core.showInfoBar('{0}', '{1}'}; );</script>", message, messageType.ToString().ToLower()));
    }

message的值为"The product "Product Name" was saved successfully."

messageType的值为info

一直说Input string was not in the correct format.

我被困了?

5 个答案:

答案 0 :(得分:20)

在每个不是代币的支撑上,你必须加倍 - 所以

function() {{

另外 - 在这里考虑XSS - message是否正确转义以插入JavaScript?

答案 1 :(得分:10)

以格式字符串

转义您的波浪括号{{}}
String.Format(@"<script type=""text/javascript"">$(document).ready(function () {{ gtg.core.showInfoBar('{0}', '{1}'); }});</script>", message, messageType.ToString().ToLower())

答案 2 :(得分:5)

你需要逃避花括号:

{{}}

String.Format(@"<script type=""text/javascript"">$(document).ready(function () {{ gtg.core.showInfoBar('{0}', '{1}'}}; );</script>", 
              message, messageType.ToString().ToLower())

答案 3 :(得分:1)

在我的情况下,我使用括号进行JsonP格式化。 JsonP也需要'{'。通过逃避{像这样:'{{',我的问题已经解决了。

答案 4 :(得分:0)

我尝试过如下,并且正在努力。

string.Format(@"ExecuteOrDelayUntilScriptLoaded(function () {{ Your function.