繁体   English   中英

Razor和String.Format不适用于特殊字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM