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

(Razor)Html.Helper中的字符串长度?,razor,html-helper,string-length,Razor,Html Helper,String Length,这是一个非常简单的问题 我有一个Html.helper: @Html.DisplayFor(modelItem => item.Text) 如何将item.Text中的字符串缩减到特定长度?我希望您可以在item.Text上直接执行子字符串或其他操作 如果您想知道我为什么要这样做,这是因为字符串很长,我只想在索引视图等中显示一点字符串。可以考虑以下三种可能性: 在将映射层中的文本发送到视图之前(将域模型转换为视图模型时),请先删除该文本 编写自定义HTML帮助程序 为给定类型编写一个自定

这是一个非常简单的问题

我有一个Html.helper:

@Html.DisplayFor(modelItem => item.Text)
如何将item.Text中的字符串缩减到特定长度?我希望您可以在item.Text上直接执行
子字符串
或其他操作


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

可以考虑以下三种可能性:

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

  • 您只需在视图模型中添加一个属性,该属性将截断字符串并显示:

    // View model
    public string TextShort { get { return Text.Substring(0, 10); } }
    
    // View
    @Html.DisplayFor(modelItem => item.TextShort)
    

    编辑:新答案

    那怎么办

    @{
     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
    )
    
    public static MvcHtmlString DisplayFor(
    这个HtmlHelper html,
    表情
    )
    

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

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

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

    string Explanation = item.Explanation.Substring(0, 10);
    
    此外,我还建议为大于给定限制的字符串添加

    变化

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


    在将其发送到视图之前,您可能需要处理这些问题。-1这不起作用-该参数是由
    DisplayFor
    方法遍历的表达式,用于标识要显示的成员-它与输出和呈现另一个想法无关。分析很好。一如既往:)谢谢。很棒的解决方案。因为我还有其他属性需要在视图中进行不同的操作,这将使操作变得简单。我没想到。谢谢。我还没有测试过,但这可能是我今天要使用的解决方案。
    @Html.DisplayFor(modelItem => item.Text) 
    
    @Html.Display(item.Text.Length > 10 ? item.Text.Substring(0,10) : item.Text)