【问题标题】:string.Format with variable names instead of numbersstring.Format 使用变量名而不是数字
【发布时间】:2016-11-30 23:07:27
【问题描述】:

我已经阅读了一些自我实现的帖子,但我认为现在 ASP.NET MVC 中应该有一些方法应该具有此功能。

我想有某种方法可以做 string.Format 做的事情:

 string.Format("example {0}", 1);

但不使用 {0} 可以像 MVC 路由一样使用变量名称。 例如:

 string.Format("example {id}", 1);

ASP.NET MVC 中有这样的公共方法吗?

[编辑: 知道例如动作链接是如何从路由中渲染出来的吗?]

【问题讨论】:

    标签: asp.net asp.net-mvc string


    【解决方案1】:

    我不知道原生方式,但我认为解决方案在于 .NET 3.5 扩展方法...

    一个博客以更易于阅读的方式展示了add string.format capabilities 的巧妙方法。

    呃,我刚刚找到了。看看this SO question。太棒了!

    【讨论】:

    • 我提到我知道有一些实现,但是基于 MVC 处理路由的方式,我认为在 ASP.NET MVC 中添加了一些内置方法。
    【解决方案2】:

    从 v2 preview 1 开始没有,ASP.NET MVC 中没有这样的方法。我也不知道 .NET Framework 中有什么这样的方法。

    【讨论】:

    • 那么动作链接是如何从路由中渲染出来的呢?
    • 首先,URI 生成是路由系统的一部分,而不是 MVC 的一部分。具体代码在 System.Web.Routing.ParsedRoute.Bind 中,有兴趣可以用 Reflector 阅读。它高度特定于 URI 生成,对一般字符串格式没有用处。
    • 谢谢@Craig Stuntz,我会看看。
    【解决方案3】:

    从 Visual Studio 2015 开始,您可以使用 Interpolated Strings 执行此操作(它是一个编译器技巧,因此您定位的 .net 框架版本无关紧要)。

    然后代码看起来像这样

    string txt = $"{person.ForeName} is not at home {person.Something}"; 
    

    我认为它使代码更具可读性并且不易出错,但是如果您想将字符串放入资源文件中进行翻译,这并不理想,但是

    【讨论】:

    • 这是 C# 6 的特性,不是 Visual Studio 的特性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 2017-10-26
    相关资源
    最近更新 更多