代码之家  ›  专栏  ›  技术社区  ›  JacobE

是否有一种方法可以在没有中继器控件的情况下绑定单个项?

  •  19
  • JacobE  · 技术社区  · 17 年前

    假设我有一个Car类型的对象,我想将其呈现为HTML:

    class Car {
      public int Wheels { get; set; }
      public string Model { get; set; }
    }
    

    我不想使用ASP.NET转发器或ListView控件进行绑定,因为它看起来太冗长了。我只有一个物体。但我仍然希望能够使用数据绑定语法,这样就不必使用标签或文本。类似:

    <div>
      Wheels: <%# (int)Eval("Wheels") %><br />
      Model: <%# (string)Eval("Model") %>
    </div>
    

    有人知道外面有一个这样的控制吗?

    我还没有准备好切换到ASP.NET MVC。


    不幸的是,detailsView控件不能满足我的需要,因为它似乎不支持我所追求的模板样式语法。它也需要绑定到一种数据源对象。

    我更喜欢马克西姆和托克尔提出的解决方案。我会努力做到的。

    3 回复  |  直到 12 年前
        1
  •  26
  •   Maxime Rouiller    17 年前

    如果页面是关于特定项目的(例如car.aspx)?carid=abc123),我通常在“currentcar”页面上有一个公共属性。

    public Car CurrentCar { get; set; }
    

    然后我可以有以下内容:

    <div>
      Wheels: <%= CurrentCar.Wheels %><br />
      Model: <%= CurrentCar.Model %>
    </div>
    

    让你有类型安全。只需确保在实际渲染之前分配了一个有效的对象。

        2
  •  5
  •   Torkel    17 年前

    我建议您将汽车设为页面上的受保护财产,这将允许您直接在ASPX页面访问它:

    <div>
      Wheels: <%= Car.Wheels %>
      Wheels: <%= Car.Models %>
    </div>
    

    由于“绑定”是强类型的,因此这种方法实际上更适合于单项目数据绑定场景。

        3
  •  0
  •   JacobE    17 年前

    受保护属性解决方案的一个缺点是不能使用它绑定到控件的属性。

    例如,以下内容不起作用:

    <asp:Label ID="Label1" Text="Probably a truck" Visible='<%# CurrentCart.Wheels > 4 %>' runat="server" />
    
    推荐文章