我认为很明显,框架需要使用将HTML保存在aspx文档中,并且代码中的所有代码都可以实现清晰的分离。
那么当GridView
不够好时我们该怎么做?
我应该:
repeater
控件将HTML保留在表示层中,但强制将业务逻辑与HTML混合使用让我们假装您说使用StringBuilder
控件。
通常要返回产品说明,我会这样做:
Repeater
但是后来我遇到的问题是什么时候我想只返回desc的150个字符,以防它太长。如果我的数据源是LINQ to SQL,我可以创建一个新字符串:
<%# DataBinder.Eval(Container.DataItem, "desc") %>
如果首选我使用string s = q.desc.lengh > 150 ? q.desc.SubString(0,150) + "..." : q.desc;
,我将如何在aspx文档中的repeater
内执行相同操作?
答案 0 :(得分:3)
我会使用Repeater,使代码中的html变得混乱且难以维护。
没有理由不在后面(或其他地方)的代码中使用辅助方法来执行此操作
<%# SomeMethod(Eval("desc")) %>
或者您正在重复的类的属性,有一个带有getter的替代版本
public class SomeItem
{
public string Desc { get; set; }
public string DescSummary
{
get
{
return Desc.Length > 150 ? string.Format("{0}...", Desc.Substring(0, 150)) : Desc;
}
}
}
并在转发器eval DescSummary
答案 1 :(得分:2)
尝试
<%# Eval("desc").ToString().Length > 150 ? Eval("desc").ToString().Substring(0, 150) : Eval("desc") %>