我正在将boolean
的值输出到我的MVC
视图中,并希望使用小写true
或false
,而不是默认{{} 1}}或True
。
我感谢我能做到这一点:
False
或使用某种扩展方法等...
但它有点违背了目的:
@this.Model.MyBool.ToString().ToLower()
我在这里阅读了这篇文章:Why does Boolean.ToString output "True" and not "true"但大多数答案看起来都很旧。
还有更现代的方法吗?
答案 0 :(得分:7)
为什么不尝试以下
public string MyStringBool
{
get { return MyBool ? "true" : "false" ; }
}
答案 1 :(得分:6)
如果你只想要一个bool变量,你应该使用@Mohamed的方法。否则你可以创建一个扩展方法(正如你自己已经说过的那样):
public static class Extensions
{
public static string ToLowerString(this bool _bool)
{
return _bool.ToString().ToLower();
}
}
然后使用它:
public static void Main()
{
bool testBoolean = true;
Console.WriteLine(testBoolean.ToLowerString());
}
答案 2 :(得分:1)
您也可以这样做,在语法上感觉比true.ToString().ToLower()
干净(我认为):
Json.Encode(true);
但是,与使用.ToString.ToLower()
实现相比,这样做的开销要大得多。
Json.Encode(object value)
具有更多的错误处理功能,因为它需要考虑将更复杂的对象作为参数传递的可能性。
我对此进行了一些基准测试,以查看实际的区别以及在我的开发箱烤面包机上的情况:
var sw0 = Stopwatch.StartNew();
sw0.Stop();
var sw1 = Stopwatch.StartNew();
var t1 = System.Web.Helpers.Json.Encode(true);
var e1 = sw1.ElapsedMilliseconds; // returns 6-9
var sw2 = Stopwatch.StartNew();
var t2 = true.ToString().ToLower();
var e2 = sw2.ElapsedMilliseconds; // returns 0
因此,一次过冲击的影响并不大。