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