0

我在下面收到此错误。

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

异常在下面的 SUBSTRING() 函数中触发

<td class="hidden-desktop">@Html.DisplayFor(modelItem => item.isim.Substring(0,10).ToString());</td>
<td class="hidden-phone hidden-tablet">@Html.DisplayFor(modelItem => item.isim)</td>

我正在尝试根据屏幕尺寸显示相同文本的短版本和长版本。我在做什么错才能收到错误消息?或者我应该如何正确使用 substring() ?

4

3 回答 3

2

您不必为简单的字符串属性使用 Html.DisplayFor。将您的代码替换为以下内容:

<td class="hidden-desktop">@item.isim.Substring(0,10)</td>
<td class="hidden-phone hidden-tablet">@item.isim</td>

另一个更好的选择是在视图模型中定义一个新的 isimShort 属性,并在控制器中将其设置为 isim.Substring(0,10)。

于 2013-07-03T19:07:13.990 回答
1

将其更改为

<td class="hidden-desktop">@Html.Display("isim", item.isim.Substring(0,10))</td>

DisplayFor期望参数是属性但Substring()不是属性

要不就

<td class="hidden-desktop">@item.isim.Substring(0,10)</td>
于 2013-07-03T19:00:34.270 回答
1

尝试将其更改为:

<td class="hidden-desktop">@Html.DisplayFor(modelItem => modelItem.isim.Substring(0,10).ToString());</td>
<td class="hidden-phone hidden-tablet">@Html.DisplayFor(modelItem => modelItem.isim)</td>
于 2013-07-03T19:00:49.777 回答