3

我目前以不同的方式使用截断和文本编辑器。两者都工作正常,但我面临这个问题。我想截断文本编辑器中的文本。T_T

我以这种方式使用截断及其工作

@helper Truncate(string input, int length)
    {
    if (input.Length <= length)
    {
        @input
    }
    else
    {
        @input.Substring(0, length)<text>...</text>
    }
}


@foreach (var item in Model)
{       
        <div>
            @Truncate(item.DetailDescription, 400)
        </div>
}



我声明 raw 以这种方式调用文本编辑器,它也可以正常工作

@html.Raw(item.DetailDescription)


问题:我怎么可能将两者结合在一个函数中?这有可能吗T_T

4

2 回答 2

6

将业务逻辑放在模型中总是更好。

我会在模型本身中添加另一个属性“ TruncatedDescription”。

  public string TruncatedDescription
    {
        get
        {
            return this.DetailDescription.Length > 400 ? this.DetailDescription.Substring(0, 400) + "..." : this.DetailDescription;
        }
    }

所以你可以直接在视图中使用它

@foreach (var item in Model)
{       
        <div>
             item.TruncatedDescription
        </div>
}

如果您遵循此方法,则可以item.TruncatedDescription在没有帮助的情况下在文本编辑器中使用,html.Row因为这不会是 HTML 编码的。

于 2013-02-13T06:45:37.240 回答
2

我以前做过这样的一个。我是这样做的。

@helper Truncate(string input, int length)
 {
   if (input.Length <= length) {
   @Html.Raw(input)
    } else {
    var thisString = input.Substring(0, length);
    @Html.Raw(thisString)
            }
 }

我在 truncate helper 中结合了 raw 然后我以这种方式调用 Truncate

@Truncate(item.DetailDescription, 400)
于 2013-02-13T07:06:52.670 回答