[英]Razor and String.Format don't work with special characters
我在Razor和String.Format上遇到问题。 我有一个参数如下:
@{
string aktenHeader = Html.Raw(Model.Node.Aktenzeichen + string.Format("{0}" + Model.Node.Aktenkurzbezeichung, (Model.Node.Aktenzeichen != null && Model.Node.Aktenkurzbezeichung != null ? " ./. " : ""))).ToString();
}
我得到一个例外:输入字符串的格式不正确。
请帮我的朋友们。 谢谢
编辑
Model.Node.Aktenzeichen =“ Akte”
Model.Node.Aktenkurzbezeichung =“测试$ {}”
而且我期望aktenHeader =“ Schnulli ./。Test $ {}”
您必须在Model.Node.Aktenkurzbezeichnung
避免使用花括号。
Model.Node.Aktenkurzbezeichung = "Test ${{}}"
这个问题已经被回答,即在这里: 如何在.NET中以格式字符串转义花括号(花括号)
如果您不能根据需要更改/替换括号,那么我认为最简单的方法是不使用string.Format()
:
@{
string aktenHeader = Html.Raw(Model.Node.Aktenzeichen + (Model.Node.Aktenzeichen != null && Model.Node.Aktenkurzbezeichung != null ? " ./. " : "") + Model.Node.Aktenkurzbezeichung).ToString();
}
听起来您根本不应该在查询字符串中完全包含Model.Node.Aktenkurzbezeichung
。 您只是想最后连接值,所以我怀疑您可以使用:
@{
string x = Model.Node.Aktenzeichen != null &&
Model.Node.Aktenkurzbezeichung != null ? " ./. " : "";
string aktenHeader = Html.Raw(Model.Node.Aktenzeichen + x +
Model.Node.Aktenkurzbezeichung).ToString();
}
为了清楚起见,我将长表达式提取为单独的局部变量。
如果要使用string.Format
,仍可以这样做:
string aktenHeader = Html.Raw(string.Format("{0}{1}{2}",
Model.Node.Aktenzeichen, x,
Model.Node.Aktenkurzbezeichung)).ToString();
从根本上讲,重要的是要弄清楚数据的哪些部分将用作字符串格式 ,哪些部分将用作值 。 当您看起来像只希望将其视为一个值时,就在使用Aktenkurzbezeichung
作为格式的一部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.