(Razor)Html.Helper中的字符串长度?

时间:2011-09-02 09:14:36

标签: razor html-helper string-length

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

我有一个Html.helper:

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

如何将item.Text中的字符串剪切为特定长度?我希望你能直接在item.Text上做SubString或其他东西。

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

5 个答案:

答案 0 :(得分:4)

有三种可能性可以考虑:

  1. 在将映射图层中的文本发送到视图之前将其删除(将域模型转换为视图模型时)
  2. 编写自定义HTML帮助程序
  3. 为给定类型编写自定义显示模板,然后3种可能性来指示正确的显示模板:1)依赖约定(在这种情况下无关,模板将被自动选取)2)装饰您的视图模型属性使用UIHint属性3)将模板名称作为第二个参数传递给DisplayFor帮助程序。

答案 1 :(得分:3)

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

<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);

另外,我建议为大于您提供的限制的字符串添加..

答案 2 :(得分:2)

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

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

// View
@Html.DisplayFor(modelItem => item.TextShort)

答案 3 :(得分:2)

更改

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

@Html.Display(item.Text.Length > 10 ? item.Text.Substring(0,10) : item.Text)

答案 4 :(得分: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是动态的,因此应该可以向视图模型添加新属性。