56 votes

Comprendre ASP.NET Eval () et Bind ()

Quelqu'un peut-il me montrer du code ASP.NET absolument minimal pour comprendre Eval() et Bind() ?

Il est préférable que vous me fournissiez deux extraits de code distincts ou des liens Web.

79voto

Darin Dimitrov Points 528142

Pour lire uniquement des contrôles qu'ils sont les mêmes. Pour les 2 voies de la liaison de données à l'aide d'une source de données dans laquelle vous souhaitez mettre à jour, insertion, etc avec déclarative de la liaison de données, vous devez utiliser Bind.

Imaginez par exemple un GridView avec un ItemTemplate et EditItemTemplate. Si vous utilisez Bind ou Eval dans la ItemTemplate, il n'y aura pas de différence. Si vous utilisez Eval dans la EditItemTemplate, la valeur ne sera pas en mesure d'être transmis à l' Update méthode de DataSource que la grille est lié.


Mise à JOUR: je suis venu avec cet exemple:

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Data binding demo</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:GridView 
            ID="grdTest" 
            runat="server" 
            AutoGenerateEditButton="true" 
            AutoGenerateColumns="false" 
            DataSourceID="mySource">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <%# Eval("Name") %>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox 
                            ID="edtName" 
                            runat="server" 
                            Text='<%# Bind("Name") %>' 
                        />
                    </EditItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </form>

    <asp:ObjectDataSource 
        ID="mySource" 
        runat="server"
        SelectMethod="Select" 
        UpdateMethod="Update" 
        TypeName="MyCompany.CustomDataSource" />
</body>
</html>

Et voici la définition d'une classe personnalisée qui sert de source de données d'objet:

public class CustomDataSource
{
    public class Model
    {
        public string Name { get; set; }
    }

    public IEnumerable<Model> Select()
    {
        return new[] 
        {
            new Model { Name = "some value" }
        };
    }

    public void Update(string Name)
    {
        // This method will be called if you used Bind for the TextBox
        // and you will be able to get the new name and update the
        // data source accordingly
    }

    public void Update()
    {
        // This method will be called if you used Eval for the TextBox
        // and you will not be able to get the new name that the user
        // entered
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X