【问题标题】:what is the downside of using inline server tags in my html?在我的 html 中使用内联服务器标签有什么缺点?
【发布时间】:2013-10-25 11:38:09
【问题描述】:

假设我想显示我的“Person”类。
我可以通过两种方式做到这一点:

  1. 在我的 html 中放几个 asp:labels,然后填写到我的服务器代码中:

    lblName.Text = person1.Name 
    lblAge.Text = person1.Age 
    
  2. 使用 asp:formView 控件,所以我的服务器代码将如下所示:

    Dim myDataSource = New Object() {person1}
    FormView1.DataSource = myDataSource
    FormView1.DataBind()
    

    我的 html 将如下所示:

    <asp:FormView ID="FormView1" runat="server">
        <ItemTemplate>
            Name:<%# Eval("Name")%>
            <br />
            Age:<%# Eval("Age")%>
        </ItemTemplate>
    </asp:FormView>
    

哪种方式更好?使用服务器标签的成本是多少?

【问题讨论】:

    标签: html vb.net data-binding formview server-tags


    【解决方案1】:

    这是相同的,因为控件必须是runat="server",并且它从服务器端将值分配给控件。

    主要区别在于您在 code_behind 文件或标记文件中分配值。随心所欲。在这两种情况下,它都需要到服务器端来收集这些值。

    我不认为使用服务器标签在代码文件中分配值的成本会有所不同,因为它们是在页面的渲染阶段处理的。

    从 msdn 中提取:

    向 ASP.NET 网页添加代码的默认模型是 创建一个代码隐藏类文件(代码隐藏页面)或编写 具有属性 runat="server" 的脚本块中的页面代码(a 单文件页面)。您编写的代码通常与 页面上的控件。例如,您可以在 通过设置控件的文本(或其他)属性从代码中翻页。 另一种可能性是使用 嵌入式代码块。嵌入式代码块 嵌入式代码块是 在页面呈现阶段执行的服务器代码。中的代码 该块可以执行编程语句和调用函数 当前页面类。

    嵌入式代码块的使用 嵌入式代码块支持 ASP.NET 网页主要是为了保持向后兼容 较旧的 ASP 技术。一般来说,使用嵌入式代码块 复杂的编程逻辑不是最佳实践,因为当 代码与标记混合在页面上,可能难以调试 和维护。另外,因为代码只在 页面的渲染阶段,您的灵活性大大低于 使用代码隐藏或脚本块代码将代码范围限定为 页面处理的适当阶段。嵌入式代码的一些用途 块包括:将控件或标记元素的值设置为 函数返回的值,如前面的示例所示。 将计算直接嵌入到标记或控件属性中。

    【讨论】:

    • 反射问题呢?我不明白这是什么意思:
    • “由于此方法执行后期绑定评估,在运行时使用反射,与标准 ASP.NET 数据绑定语法相比,它可能导致性能明显下降。” (来自 MSDN)
    • 服务器标签在页面的渲染阶段进行处理。它总是被触发。它只是用来保持与旧的 asp 页面的兼容性。它根本不谈论性能。只是关于可读性。我已经更新了我的答案,我给你这个链接阅读:很好解释:msdn.microsoft.com/en-gb/library/ms178135(vs.80).aspx
    • 谢谢。但我认为它不仅仅是一个普通的服务器标签,它是 dataBinder.Eval。这里:msdn.microsoft.com/en-us/library/4hx47hfe.aspx 注意那里的“注”。
    • 是的,Eval 使用后期绑定评估。确实,使用标准 ASP.NET 数据绑定可能会带来更多麻烦
    猜你喜欢
    • 1970-01-01
    • 2012-06-28
    • 2010-12-26
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    相关资源
    最近更新 更多