c# repater from JSON without class

64 Views Asked by At

Im new to c# i come from a basic vb knowledge so im still learning.

The question is: I have a json whit some var (name, tlf, email) that i read and show trought a repeater. In VB i can read this with newtonsoft and then bind to a repeater, no need to make a class whit such properties.

But in c# i have to make a class to make it work.

Its something i miss? Thanks

private class JsonFooterDatos
    {
        private string name;
        private string tlf;
        private string email;        

        public string Name{ get {return name; }}
        public string Tlf { get {return tlf; }}
        public string Email { get {return email; }}
    }
    public void RellenarFooter()
    {
        LecturaXML.Apartado apartado = new LecturaXML.Apartado();
        LecturaXML.LeerApartadoXML("2530", ref apartado);

        if (apartado.Id != "")
        {
            var result = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JToken>(apartado.Html);
            dirFooter.DataSource = result;
            dirFooter.DataBind();
        }
    }
protected void DirFooterProvincia(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
//

HERE WHY I HAVE TO CAST TO THIS CLASS IN C# BUT NOT IN VB

 -->> //           var di = (JsonFooterDatos)e.Item.DataItem;
//IF I DONT DO THE CAST e.Item.DataItem.email WILL FAIL WITH CS1061 BUT IN VB IT WORKS
            if (di.Name.ToString().ToUpper() != di.Email.ToString().ToUpper())
                e.Item.FindControl("Provincia").Visible = true;
        }
    }

VB Code that works

  Sub RellenarFooter()
        Dim apartado As LecturaXML.Apartado = New LecturaXML.Apartado
        LecturaXML.LeerApartadoXML("2444", apartado)

        If apartado.Id <> "" Then
            Dim result = JsonConvert.DeserializeObject(Of Linq.JToken)(apartado.Html)
            dirFooter.DataSource = result
            dirFooter.DataBind()
        End If
    End Sub
    Protected Sub DirFooterProvincia(sender As Object, e As RepeaterItemEventArgs)
        If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
            If e.Item.DataItem("email").ToString.ToUpper <> e.Item.DataItem("name").ToString.ToUpper Then
                e.Item.FindControl("Provincia").Visible = True
            End If
        End If
    End Sub

JSON

[
    {
        "Name": "OFICINA DE EMPRESAS 1",
        "Tlf": "947 11 11 11 ",
        "Email": "[email protected]"
    },
    {
        "Name": "OFICINA DE EMPRESAS 2",
        "Tlf": "947 11 11 11 ",
        "Email": "[email protected]"
    },
    {
        "Name": "OFICINA DE EMPRESAS 3",
        "Tlf": "947 11 11 11 ",
        "Email": "[email protected]"
    }
]

Thanks

0

There are 0 best solutions below