我为它创建了一个解决方法,但是对以下字符串感到困惑:
string dpicker = "<script>$(function() { $(\"#{0}\").datepicker();});</script>";
执行此操作时抛出FormatException:
String.Format(dpicker, "DatePicker");
实际问题是什么?
答案 0 :(得分:8)
你需要逃避函数的大括号:
string dpicker = "<script>$(function() {{ $(\"#{0}\").datepicker();}});</script>";
// ^^ ^^
如此处所使用的,正确的方法是将它们加倍。请参阅Escaping Braces。
string.Format
方法的工作方式是查看整个字符串,逐个字符,并选择它们是属于“文字”类别,还是属于格式参数。一看到你的未转动的花括号,它就会理解为“我们现在正在格式化”,所以它首先寻找一个数字字符(当然,这不是花括号中唯一可接受的值,但是至少一个数字必须先出现,找不到一个,并抛出异常。
答案 1 :(得分:4)
String.Format
试图将第一个{
解释为占位符的开头,当然无法将$(\"#{0}\").datepicker();
解析为某种数值。您可以通过{{
和}}
转义格式字符串中的括号。所以这段代码应该有效:
string dpicker = "<script>$(function() {{ $(\"#{0}\").datepicker();}});</script>";
var s = String.Format(dpicker, "DatePicker");
答案 2 :(得分:2)
额外的花括号,使用双花括号{{
和}}
来逃避它们:
string dpicker = "<script>$(function() {{ $(\"#{0}\").datepicker();}});</script>";