0

我对 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 ${}"

4

2 回答 2

6

您必须在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();    
}
于 2013-06-26T13:43:11.013 回答
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当您看起来希望它被视为一个值时,您将其用作格式的一部分。

于 2013-06-26T13:46:22.327 回答