C # String.Format - Неверная строка ввода - PullRequest
8 голосов
/ 17 августа 2011

У меня есть расширение 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 ]

20 голосов
/ 17 августа 2011

На каждой скобке, которая не является токеном, вы должны удвоить - так что

function() {{

Etc

Также - рассмотрите здесь XSS - message правильно ли экранирован для вставки в JavaScript?

10 голосов
/ 17 августа 2011

Избавьтесь от волнистых скобок {{}} в строке формата

String.Format(@"<script type=""text/javascript"">$(document).ready(function () {{ gtg.core.showInfoBar('{0}', '{1}'); }});</script>", message, messageType.ToString().ToLower())
5 голосов
/ 17 августа 2011

Вам нужно убрать фигурные скобки:

{{ и }}

String.Format(@"<script type=""text/javascript"">$(document).ready(function () {{ gtg.core.showInfoBar('{0}', '{1}'}}; );</script>", 
              message, messageType.ToString().ToLower())
1 голос
/ 27 февраля 2013

В моем случае я использовал скобку для форматирования JsonP.JsonP тоже требует '{'.Избегая {как это: '{{', моя проблема была решена.

0 голосов
/ 17 июня 2015

Я попробовал, как показано ниже, и он работает.

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