8

我有一个像这样的 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.

我卡住了??

4

5 回答 5

20

在每个不是令牌的大括号上,您必须加倍 - 所以

function() {{

ETC

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

于 2011-08-17T17:54:56.863 回答
10

转义格式字符串中的波浪括号 {{ }}

String.Format(@"<script type=""text/javascript"">$(document).ready(function () {{ gtg.core.showInfoBar('{0}', '{1}'); }});</script>", message, messageType.ToString().ToLower())
于 2011-08-17T17:53:00.427 回答
5

您需要转义花括号:

{{}}

String.Format(@"<script type=""text/javascript"">$(document).ready(function () {{ gtg.core.showInfoBar('{0}', '{1}'}}; );</script>", 
              message, messageType.ToString().ToLower())
于 2011-08-17T17:53:05.377 回答
1

在我的例子中,我使用了 JsonP 格式的括号。JsonP 也需要一个“{”。通过像这样转义 {:'{{',我的问题就解决了。

于 2013-02-27T12:32:35.613 回答
0

我已经尝试如下,它的工作。

string.Format(@"ExecuteOrDelayUntilScriptLoaded(function () {{ Your function. 
于 2015-06-17T03:58:31.283 回答