我是C#/ MVC世界的新手。今天我花了很多时间弄清楚如何以我想要的格式显示DateTimeOffset对象。最后让它以这种方式工作。
Html.TextBoxFor(model => model.DeliveryDate,"{0:MM/dd/yyyy}",
new { htmlAttributes = new { @class = "datepicker" } })
但我仍然不明白' 0' 0的重要性。在格式字符串中。如果我用任何其他数字替换0或完全删除它,页面会中断。有人能帮助我理解这个吗?
答案 0 :(得分:2)
当您使用string.Format
时,您可以为{0}
,{1}
等参数传递空间,这些参数是您作为方法参数传递的索引。 asp.net razor助手也是如此。
您还可以在索引分隔:
之后提供格式,样本为:{0:0.00}
,格式为2位小数或{1:dd/MM/yyyy}
日期等。
有一种使用String Interpolation
实现它的新方法。基本上,您可以在字符串上连接值而不生成新字符串。样本:
var i = 18;
var s = $"You are {age} years old.";
由于您使用$
启动字符串,因此您可以在{
和}
之间传递参数。您也可以使用相同的格式来格式化您在string.Format
上使用的数据格式。样本:
var today = $"Today is {DateTime.Now:D}";
var date = DateTime.Now.Add(1);
var tommorrow = $"Tommorrow is {date:dd/MM/yyyy}";
答案 1 :(得分:2)
格式字符串中的{0}是格式项。 0是将在该位置插入字符串值的对象的索引。 (索引从0开始。)如果要插入的对象不是字符串,则在将其插入结果字符串之前,会调用其ToString方法将其转换为1。
答案 2 :(得分:1)
这是一个带参数的格式字符串(例如在Console.WriteLine或string.Format中使用)。 {0}
将是第一个参数的占位符,{0:mm/dd/yyyy}
只是一个格式字符串,用于将第一个参数转换为字符串。
答案 3 :(得分:1)
请参阅String.Format()
的文档:
https://msdn.microsoft.com/en-us/library/system.string.format.aspx
简而言之,当模型呈现为HTML文本时,DeliveryDate
对象值将传递给String.Format()
,其中{0}
表示数组中第一个值的索引值传递给Format()
。所以{0:MM/dd/yyyy}
只是意味着使用日期组件格式化数组中的第一个值。基本上,它会在内部执行类似的操作:
String s = SomeValueArray[0].ToString("MM/dd/yyyy");
答案 4 :(得分:0)
0是您的参数/属性的占位符(在本例中为DeliveryDate
..类似于String.Format
示例...所以当您的View被渲染时... 0将被替换为DeliveryDate
以 MM / dd / yyyy