代码很简单,就是判断一个值然后根据值进行2种操作,大家应该能看懂意思,就是不知这种编程写法行不行???是不是不正规。。我是刚从asp转过来的。net懂的少。.aspx
<asp:repeater id="my" runat="server" EnableViewState="False">
<ItemTemplate>
<a href="<%# DataBinder.Eval(Container, "DataItem.lj").ToString().Trim()==""?DataBinder.Eval(Container, "DataItem.typeid", "more.aspx?typeid={0}"):DataBinder.Eval(Container, "DataItem.lj", "{0}") %>"><%#DataBinder.Eval(Container, "DataItem.typename")%></a>
</ItemTemplate>
</asp:repeater>
.cs
private void Page_Load(object sender, System.EventArgs e)
{
string sql="select * from type order by typeid";
DataView zhuanti=getdataview(sql,"zhuanti");
my.DataSource=zhuanti;
my.DataBind ();
}

解决方案 »

  1.   

    if(!Page.IsPostBack)
    {
    string sql="select * from type order by typeid";
    DataView zhuanti=getdataview(sql,"zhuanti");
    my.DataSource=zhuanti;
    my.DataBind ();
    }
    Page_Load写成这样会好点吧。
      

  2.   

    我是说前台.aspx中那样写代码是不是不好啊,有什么办法吗?
      

  3.   

    这是网上拷的一个例子。它的原理是调用一个函数,这样代码应该好写些
    (1)后台返回url
    前台
    <asp:TemplateColumn HeaderText="打开">
    <ItemTemplate>
    <asp:HyperLink Text="打开" NavigateUrl='<%# myfunc2(DataBinder.Eval(Container.DataItem,"vName"),DataBinder.Eval(Container.DataItem,"iAge"))%> ' Runat="server" Target="_blank" ID="Hyperlink1">
    </asp:HyperLink>
    </ItemTemplate>
    </asp:TemplateColumn>
    后台
    protected string myfunc2(object s1,object s2)
    {
    return "newpage.aspx?name="+s1.ToString()+"&age="+s2.ToString();
    }