This is a migrated thread and some comments may be shown as answers.

[Solved] Action in Binding to Hierarchical Model doesn't work

2 Answers 115 Views
PanelBar
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Dubravko
Top achievements
Rank 1
Dubravko asked on 27 Jan 2011, 09:23 AM
I'm trying to bind my PanelBar to a hierarchical model. A view displays but no link is generated. I tried the action properties and URL property - none worked. What am I missing? Is this a bug? 



Model
public class NavigationData
{
    public string Text { get; set; }
    public string ImageUrl { get; set; }
    public string NavigateUrl { get; set; }
    public string ControllerName { get; set; }
    public string ActionName { get; set; }
    public string RouteName { get; set; }
    public List<NavigationData> ChildItems { get; set; }
}


View
@model IEnumerable<Project.Models.NavigationData>
@{
    ViewBag.Title = "Index";
}
 
@{
    Html.Telerik().PanelBar()
        .Name("NavBar")
        .SelectedIndex(1)
        .BindTo(Model, mappings => 
         {
             mappings.For<Project.Models.NavigationData>(binding => binding
                     .ItemDataBound((item, nav) =>
                     {
                         item.Text = nav.Text;
                     })
                     .Children(nav => nav.ChildItems));
             mappings.For<Project.Models.NavigationData>(binding => binding
                     .ItemDataBound((item, childnav) =>
                     {
                         item.Text = childnav.Text;
                         //item.Url = childnav.NavigateUrl;
                         item.ControllerName = childnav.ControllerName;
                         item.ActionName = childnav.ActionName;
                         item.RouteName = childnav.RouteName;
                     }));
         })
         .Render();
}

2 Answers, 1 is accepted

Sort by
0
Dubravko
Top achievements
Rank 1
answered on 27 Jan 2011, 03:46 PM
To answer my own question (although I don't understand why this works):

.BindTo(Model, mappings => 
 {
     mappings.For<Project.Models.NavigationData>(binding => binding
             .ItemDataBound((item, nav) =>
             {
                 item.Text = nav.Text;
                 if (nav.ControllerName != String.Empty)
                     item.ControllerName = nav.ControllerName;
                 if (nav.ActionName != String.Empty)
                     item.ActionName = nav.ActionName;
                 if (nav.RouteName != "")
                     item.RouteName = nav.RouteName;
             })
             .Children(nav => nav.ChildItems));
     mappings.For<Project.Models.NavigationData>(binding => binding
             .ItemDataBound((item, nav) =>
             {
                 item.Text = nav.Text;
             }));
 })
0
Mahesh
Top achievements
Rank 1
answered on 19 Jul 2012, 07:37 AM
Can u please share code of your controller because i am generating sitemap from the list of data generated from the database..
Please reply me fast...
I am waiting for your reply
and if possible please share your solution....
Tags
PanelBar
Asked by
Dubravko
Top achievements
Rank 1
Answers by
Dubravko
Top achievements
Rank 1
Mahesh
Top achievements
Rank 1
Share this question
or