剃刀和字符串.格式don';不要用特殊字符
本文关键字:特殊字符 字符串 格式 don 剃刀 | 更新日期: 2023-09-27 18:20:02
我对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();
}
我得到了一个例外:输入字符串的格式不正确。
朋友们,请帮帮我。感谢
编辑
型号.Aktenzeichen="Akte"
Model.Node.Aktenkurzbezeichung="测试${}"
我期望aktenHeader="Schulli./.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
作为格式的一部分时,看起来您希望它只是作为一个值来处理。