5

这是一个非常简单的问题。

我有一个 Html.helper:

@Html.DisplayFor(modelItem => item.Text)

如何将字符串从 item.Text 减少到特定长度?我希望你可以SubString直接在 item.Text 上做某事。

如果你想知道我为什么要这个,那是因为字符串很长,我只想在索引视图等中显示一点。

4

5 回答 5

5

我需要同样的东西,并用以下几行解决了这个问题。

<td>
    @{
        string Explanation = item.Explanation;
        if (Explanation.Length > 10) 
        {  
            Explanation = Explanation.Substring(0, 10);
        }
    }
@Explanation
</td>

如果你的字符串总是大于 10,你可以排除:

if (Explanation.Length > 10) 
{
    Explanation = Explanation.Substring(0, 10);
}

并直接写:

string Explanation = item.Explanation.Substring(0, 10);

此外,我建议添加..大于您给出的限制的字符串。

于 2013-04-04T17:31:18.480 回答
4

有3种可能性可以考虑:

  1. 在将其发送到视图之前剥离映射层中的文本(将域模型转换为视图模型时)
  2. 编写自定义 HTML 助手
  3. 为给定类型编写自定义显示模板,然后通过 3 种可能性来指示正确的显示模板:1)依赖约定(在这种情况下无需执行任何操作,模板将被自动选择) 2)使用 UIHint 装饰您的视图模型属性属性 3) 将模板名称作为第二个参数传递给 DisplayFor 助手。
于 2011-09-02T09:18:54.833 回答
3

您可以在视图模型中添加一个属性,该属性会截断字符串并显示它:

// View model
public string TextShort { get { return Text.Substring(0, 10); } }

// View
@Html.DisplayFor(modelItem => item.TextShort)
于 2011-09-02T09:22:25.020 回答
2

改变

@Html.DisplayFor(modelItem => item.Text) 

@Html.Display(item.Text.Length > 10 ? item.Text.Substring(0,10) : item.Text)
于 2013-06-12T03:55:46.033 回答
0

编辑:新答案

关于什么

@{
 modelItem.ShortText= model.Text.Substring(0, ....);
}

@Html.DisplayFor(modelItem => item.ShortText)

DisplayFor 的原型是:

public static MvcHtmlString DisplayFor<TModel, TValue>(
    this HtmlHelper<TModel> html,
    Expression<Func<TModel, TValue>> expression
)

我认为 modelItem 是动态的,因此应该可以向视图模型添加新属性。

于 2011-09-02T09:28:11.083 回答