当前位置: 首页 > 编程语言 > C#

格式化DateTime错误“模板只能用于字段访问、属性访问、单维数组索引..”分享

时间:2023-04-10 14:21:29 C#

格式化DateTime错误“模板只能用于字段访问、属性访问、单维数组索引维数组索引..”在MVCRazor视图中,我试图格式化DateTime字段以仅显示时间。使用下面的代码我得到错误“模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式。”@(Html.DisplayFor(m=>row.LastUpdatedDate.ToString("HH:mm:ss")))任何帮助请问是什么导致了这个错误以及如何解决它?感谢您的帮助。DisplayFor需要一个表达式来标识包含要显示的属性的对象。它将使用内置或自定义模板来呈现显示。您试图提供显示逻辑作为表达式参数,这是无效的。使用@String.Format("HH:mm:ss",Model.row.LastUpdateDate)或@Model.row.LastUpdateDate.ToString("HH:mm:ss")我有同样的问题,我已经解决了这个问题。如果你想将“LastUpdatedDate”转换为特定格式,那么你可以试试这个:@Html.TextBoxFor(m=>row.LastUpdatedDate,new{@Value=Convert.ToString(row.LastUpdatedDate.ToShortDateString())})另一种可能的方法是使用扩展方法来实现相同的目标。使用该方法,您不会使用硬编码格式填充视图。扩展方法//////将日期时间字符串转换为日期字符串。此外,如果日期是默认值,即01/01/0001///则返回String.Empty。//////输入DateTime属性///传递true以仅显示日期。///False将保持日期不变。///publicstaticstringToString(thisDateTimeinputDate,boolshowOnlyDate){varresultDate=inputDate.ToString();如果(showOnlyDate){如果(inputDate==DateTime.MinValue){resultDate=string.Empty;}else{resultDate=inputDate.ToString("dd-MMM-yyyy");}}返回结果日期;}查看@Model.LastUpdateDate.ToString(true).Link:DateTimeDatesinASP.netMVC你有一个非常简单的方法来解决这个问题,你可能不止一次遇到过这个问题。要了解发生了什么,您将方法作为参数传递。相反,您应该传递一个表达式。而不是做@(Html.DisplayFor(m=>row.LastUpdatedDate.ToString("HH:mm:ss")))你应该做vardate=row.LastUpdatedDate.ToString("HH:mm:ss")@Html.DisplayFor(m=>date)而不是TextBoxFor使用TextBox并在值字段中指定格式,即@Html.TextBox("textboxName",Model.dateName.ToString("MMMddyyyy"))使用bootstrapdatepicker,它看起来like:以上就是C#学习教程:格式化DateTime报错“模板只能用于字段访问,属性访问,一维数组索引..”的所有内容分享,如果对大家有用还需要了解更多关于C#希望大家多多关注教程—@Html.TextBox("closeDate",Model.closeDate.ToString("MMMddyyyy"),new{@class="form-control",@readonly="readonly",size="16",placeholder=Lang.Label_closeDate})本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: