我有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 =“Test $ {}”
我期待aktenHeader =“Schnulli ./。测试$ {}”
答案 0 :(得分:6)
你必须在Model.Node.Aktenkurzbezeichnung
中摆脱花括号。
Model.Node.Aktenkurzbezeichung = "Test ${{}}"
这个问题已经回答,即:How to escape braces (curly brackets) in a format string in .NET
如果您无法根据需要更改/替换大括号,那么我认为最简单的方法是不使用string.Format()
:
@{
string aktenHeader = Html.Raw(Model.Node.Aktenzeichen + (Model.Node.Aktenzeichen != null && Model.Node.Aktenkurzbezeichung != null ? " ./. " : "") + Model.Node.Aktenkurzbezeichung).ToString();
}
答案 1 :(得分:2)
听起来你根本不应该在查询字符串中包含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
作为格式的一部分。