DataBind Repeater to string[] in ViewData without code behind. MVC 2

Discussion in 'ASP .Net' started by Roger Frost, May 23, 2010.

  1. Roger Frost

    Roger Frost Guest

    Greetings,

    I'm coming from a WinForms background and diving into ASP.Net. I'm using:

    C#, VS2010, .Net 4.0, ASP.Net, MVC 2.

    What I want to do is get a string[] of roles in the controller with:

    string[] currentUsersRoles = Roles.GetRolesForUser(User.Identity.Name);

    Then I want to attach this to the ViewData object (also in the controller):

    ViewData["CurrentUsersRoles"] = currentUsersRoles;

    Now, in the View I want to bind a Repeater to the array I fed to ViewData.
    Something
    like:

    <asp:Repeater ID="CurrentUsersRoles" runat="server" DataSourceID="[WHAT GOES
    HERE?]">
    <HeaderTemplate>
    <b>Account Roles:</b>
    <br />
    </HeaderTemplate>
    <ItemTemplate>
    <%# [WHAT GOES HERE?] %>
    <br />
    </ItemTemplate>
    </asp:Repeater>

    I want to do this without code behind (which I can already do with my
    limited knowledge)
    because using code behind defeats the purpose of using MVC in the first
    place, but that's
    just me. Anyhow, this should be easy right? The Repeater exists for the
    sole purpose of
    displaying collections efficiently, yes? So is there a collection any
    simpler or more fundamental
    than an array? I suspect some casting will be needed from object back to
    string[], but I don't know
    where to begin, all I have now is a hammer and they all look like nails to
    me.

    I've been googling this for hours, but the posts I've seen all want to use
    code behind to
    acomplish this except this one:

    http://forums.asp.net/t/1257598.aspx

    I believe she is on the right track...at least it looks good to me, but
    being the newbie that I am, I'm
    stuck on the line:

    <ext:ViewDataSource ID="MyViewDataSource" runat="server"
    ViewDataKey="Computers" />

    Because evidently "ext" doesn't mean anything in asp.net.

    But, back to my point about simple-array-binding-repeater-thingamajigs, this
    approach
    seems like overkill for such a trivial task anyhow.

    Can someone please enlighten me? All productive answers will be extremely
    appreciated!

    Thanks,
    Roger
     
    Roger Frost, May 23, 2010
    #1
    1. Advertising

  2. Roger Frost

    Roger Frost Guest

    Hello,

    Just a quick update here, I may have stumbled upon
    something that will lead me in the right direction.

    I'm going to attempt to use ExpressionBuilder(s) as
    described in:

    http://weblogs.asp.net/infinitiesloop/archive/2006/08/09/The-CodeExpressionBuilder.aspx

    ....I will post back with the results as soon as I have
    time to try it. I don't fully understand it yet, or
    even what it's capable of, but it's something.

    In the mean time, I'm still interested in any idea's
    regarding the OP (below).

    Thanks,
    Roger





    "Roger Frost" <> wrote in message
    news:...
    > Greetings,
    >
    > I'm coming from a WinForms background and diving into ASP.Net. I'm using:
    >
    > C#, VS2010, .Net 4.0, ASP.Net, MVC 2.
    >
    > What I want to do is get a string[] of roles in the controller with:
    >
    > string[] currentUsersRoles =
    > Roles.GetRolesForUser(User.Identity.Name);
    >
    > Then I want to attach this to the ViewData object (also in the
    > controller):
    >
    > ViewData["CurrentUsersRoles"] = currentUsersRoles;
    >
    > Now, in the View I want to bind a Repeater to the array I fed to ViewData.
    > Something
    > like:
    >
    > <asp:Repeater ID="CurrentUsersRoles" runat="server" DataSourceID="[WHAT
    > GOES HERE?]">
    > <HeaderTemplate>
    > <b>Account Roles:</b>
    > <br />
    > </HeaderTemplate>
    > <ItemTemplate>
    > <%# [WHAT GOES HERE?] %>
    > <br />
    > </ItemTemplate>
    > </asp:Repeater>
    >
    > I want to do this without code behind (which I can already do with my
    > limited knowledge)
    > because using code behind defeats the purpose of using MVC in the first
    > place, but that's
    > just me. Anyhow, this should be easy right? The Repeater exists for the
    > sole purpose of
    > displaying collections efficiently, yes? So is there a collection any
    > simpler or more fundamental
    > than an array? I suspect some casting will be needed from object back to
    > string[], but I don't know
    > where to begin, all I have now is a hammer and they all look like nails to
    > me.
    >
    > I've been googling this for hours, but the posts I've seen all want to use
    > code behind to
    > acomplish this except this one:
    >
    > http://forums.asp.net/t/1257598.aspx
    >
    > I believe she is on the right track...at least it looks good to me, but
    > being the newbie that I am, I'm
    > stuck on the line:
    >
    > <ext:ViewDataSource ID="MyViewDataSource" runat="server"
    > ViewDataKey="Computers" />
    >
    > Because evidently "ext" doesn't mean anything in asp.net.
    >
    > But, back to my point about simple-array-binding-repeater-thingamajigs,
    > this approach
    > seems like overkill for such a trivial task anyhow.
    >
    > Can someone please enlighten me? All productive answers will be extremely
    > appreciated!
    >
    > Thanks,
    > Roger
     
    Roger Frost, Jun 6, 2010
    #2
    1. Advertising

  3. Roger Frost

    Cubaman Guest

    Re: DataBind Repeater to string[] in ViewData without code behind.MVC 2

    On May 23, 10:56 am, "Roger Frost" <> wrote:
    > Greetings,
    >
    > I'm coming from a WinForms background and diving into ASP.Net. I'm using:
    >
    > C#, VS2010, .Net 4.0, ASP.Net, MVC 2.
    >
    > What I want to do is get a string[] of roles in the controller with:
    >
    >      string[] currentUsersRoles = Roles.GetRolesForUser(User.Identity.Name);
    >
    > Then I want to attach this to the ViewData object (also in the controller):
    >
    >     ViewData["CurrentUsersRoles"] = currentUsersRoles;
    >
    > Now, in the View I want to bind a Repeater to the array I fed to ViewData..
    > Something
    > like:
    >
    > <asp:Repeater ID="CurrentUsersRoles" runat="server" DataSourceID="[WHAT GOES
    > HERE?]">
    >     <HeaderTemplate>
    >         <b>Account Roles:</b>
    >         <br />
    >     </HeaderTemplate>
    >     <ItemTemplate>
    >         <%# [WHAT GOES HERE?] %>
    >         <br />
    >     </ItemTemplate>
    > </asp:Repeater>
    >
    > I want to do this without code behind (which I can already do with my
    > limited knowledge)
    > because using code behind defeats the purpose of using MVC in the first
    > place, but that's
    > just me.  Anyhow, this should be easy right?  The Repeater exists for the
    > sole purpose of
    > displaying collections efficiently, yes?  So is there a collection any
    > simpler or more fundamental
    > than an array?  I suspect some casting will be needed from object back to
    > string[], but I don't know
    > where to begin, all I have now is a hammer and they all look like nails to
    > me.
    >
    > I've been googling this for hours, but the posts I've seen all want to use
    > code behind to
    > acomplish this except this one:
    >
    > http://forums.asp.net/t/1257598.aspx
    >
    > I believe she is on the right track...at least it looks good to me, but
    > being the newbie that I am, I'm
    > stuck on the line:
    >
    > <ext:ViewDataSource ID="MyViewDataSource" runat="server"
    > ViewDataKey="Computers" />
    >
    > Because evidently "ext" doesn't mean anything in asp.net.
    >
    > But, back to my point about simple-array-binding-repeater-thingamajigs, this
    > approach
    > seems like overkill for such a trivial task anyhow.
    >
    > Can someone please enlighten me?  All productive answers will be extremely
    > appreciated!
    >
    > Thanks,
    > Roger


    Hello Roger.
    There is no runat="server" in MVC Views. You don't use aspnet common
    controls with MVC, so forget about Repeaters, DataGrids, etc.
    Take a deeper look at some MVC tutorials, specially a foreach loop in
    a view, in order to get something like a repeater effect.
    http://blogs.msdn.com/b/brada/archi...nd-with-the-entity-framework.aspx?PageIndex=1

    Best regards

    Oscar Acosta
     
    Cubaman, Jun 7, 2010
    #3
  4. Roger Frost

    Roger Frost Guest

    Re: DataBind Repeater to string[] in ViewData without code behind. MVC 2

    Oscar,

    Thanks for replying.

    While I can guarantee to a complete certainty that the
    following is valid in an MVC 2 View aspx page...

    <asp:Label ID="mylabel" Text="Some Text" runat="server">
    </asp:Label>

    ....I will not deny that you are correct in that maybe I should
    not use common asp.net controls in my MVC 2 application
    in the first place. The further along I get the more headaches
    arrise. With my WinForms/Database background, coding the
    output manually will probably feel more comfortable anyway.
    To heck with markup and server tags! :) (...to a point at least)

    Thanks for making me think outside of the box, I'll
    put my hammer away now.

    -Roger




    "Cubaman" <> wrote in message
    news:...
    > On May 23, 10:56 am, "Roger Frost" <> wrote:
    >> Greetings,
    >>
    >> I'm coming from a WinForms background and diving into ASP.Net. I'm using:
    >>
    >> C#, VS2010, .Net 4.0, ASP.Net, MVC 2.
    >>
    >> What I want to do is get a string[] of roles in the controller with:
    >>
    >> string[] currentUsersRoles =
    >> Roles.GetRolesForUser(User.Identity.Name);
    >>
    >> Then I want to attach this to the ViewData object (also in the
    >> controller):
    >>
    >> ViewData["CurrentUsersRoles"] = currentUsersRoles;
    >>
    >> Now, in the View I want to bind a Repeater to the array I fed to
    >> ViewData.
    >> Something
    >> like:
    >>
    >> <asp:Repeater ID="CurrentUsersRoles" runat="server" DataSourceID="[WHAT
    >> GOES
    >> HERE?]">
    >> <HeaderTemplate>
    >> <b>Account Roles:</b>
    >> <br />
    >> </HeaderTemplate>
    >> <ItemTemplate>
    >> <%# [WHAT GOES HERE?] %>
    >> <br />
    >> </ItemTemplate>
    >> </asp:Repeater>
    >>
    >> I want to do this without code behind (which I can already do with my
    >> limited knowledge)
    >> because using code behind defeats the purpose of using MVC in the first
    >> place, but that's
    >> just me. Anyhow, this should be easy right? The Repeater exists for the
    >> sole purpose of
    >> displaying collections efficiently, yes? So is there a collection any
    >> simpler or more fundamental
    >> than an array? I suspect some casting will be needed from object back to
    >> string[], but I don't know
    >> where to begin, all I have now is a hammer and they all look like nails
    >> to
    >> me.
    >>
    >> I've been googling this for hours, but the posts I've seen all want to
    >> use
    >> code behind to
    >> acomplish this except this one:
    >>
    >> http://forums.asp.net/t/1257598.aspx
    >>
    >> I believe she is on the right track...at least it looks good to me, but
    >> being the newbie that I am, I'm
    >> stuck on the line:
    >>
    >> <ext:ViewDataSource ID="MyViewDataSource" runat="server"
    >> ViewDataKey="Computers" />
    >>
    >> Because evidently "ext" doesn't mean anything in asp.net.
    >>
    >> But, back to my point about simple-array-binding-repeater-thingamajigs,
    >> this
    >> approach
    >> seems like overkill for such a trivial task anyhow.
    >>
    >> Can someone please enlighten me? All productive answers will be
    >> extremely
    >> appreciated!
    >>
    >> Thanks,
    >> Roger

    >
    > Hello Roger.
    > There is no runat="server" in MVC Views. You don't use aspnet common
    > controls with MVC, so forget about Repeaters, DataGrids, etc.
    > Take a deeper look at some MVC tutorials, specially a foreach loop in
    > a view, in order to get something like a repeater effect.
    > http://blogs.msdn.com/b/brada/archi...nd-with-the-entity-framework.aspx?PageIndex=1
    >
    > Best regards
    >
    > Oscar Acosta
     
    Roger Frost, Jun 8, 2010
    #4
  5. Roger Frost

    Cubaman Guest

    Re: DataBind Repeater to string[] in ViewData without code behind.MVC 2

    On Jun 8, 11:37 am, "Roger Frost" <> wrote:
    > Oscar,
    >
    > Thanks for replying.
    >
    > While I can guarantee to a complete certainty that the
    > following is valid in an MVC 2 View aspx page...
    >
    > <asp:Label ID="mylabel" Text="Some Text" runat="server">
    > </asp:Label>
    >
    > ...I will not deny that you are correct in that maybe I should
    > not use common asp.net controls in my MVC 2 application
    > in the first place.  The further along I get the more headaches
    > arrise.  With my WinForms/Database background, coding the
    > output manually will probably feel more comfortable anyway.
    > To heck with markup and server tags! :)  (...to a point at least)
    >
    > Thanks for making me think outside of the box, I'll
    > put my hammer away now.
    >
    > -Roger
    >
    > "Cubaman" <> wrote in message
    >
    > news:...
    >
    > > On May 23, 10:56 am, "Roger Frost" <> wrote:
    > >> Greetings,

    >
    > >> I'm coming from a WinForms background and diving into ASP.Net. I'm using:

    >
    > >> C#, VS2010, .Net 4.0, ASP.Net, MVC 2.

    >
    > >> What I want to do is get a string[] of roles in the controller with:

    >
    > >>      string[] currentUsersRoles =
    > >> Roles.GetRolesForUser(User.Identity.Name);

    >
    > >> Then I want to attach this to the ViewData object (also in the
    > >> controller):

    >
    > >>     ViewData["CurrentUsersRoles"] = currentUsersRoles;

    >
    > >> Now, in the View I want to bind a Repeater to the array I fed to
    > >> ViewData.
    > >> Something
    > >> like:

    >
    > >> <asp:Repeater ID="CurrentUsersRoles" runat="server" DataSourceID="[WHAT
    > >> GOES
    > >> HERE?]">
    > >>     <HeaderTemplate>
    > >>         <b>Account Roles:</b>
    > >>         <br />
    > >>     </HeaderTemplate>
    > >>     <ItemTemplate>
    > >>         <%# [WHAT GOES HERE?] %>
    > >>         <br />
    > >>     </ItemTemplate>
    > >> </asp:Repeater>

    >
    > >> I want to do this without code behind (which I can already do with my
    > >> limited knowledge)
    > >> because using code behind defeats the purpose of using MVC in the first
    > >> place, but that's
    > >> just me.  Anyhow, this should be easy right?  The Repeater exists for the
    > >> sole purpose of
    > >> displaying collections efficiently, yes?  So is there a collection any
    > >> simpler or more fundamental
    > >> than an array?  I suspect some casting will be needed from object back to
    > >> string[], but I don't know
    > >> where to begin, all I have now is a hammer and they all look like nails
    > >> to
    > >> me.

    >
    > >> I've been googling this for hours, but the posts I've seen all want to
    > >> use
    > >> code behind to
    > >> acomplish this except this one:

    >
    > >>http://forums.asp.net/t/1257598.aspx

    >
    > >> I believe she is on the right track...at least it looks good to me, but
    > >> being the newbie that I am, I'm
    > >> stuck on the line:

    >
    > >> <ext:ViewDataSource ID="MyViewDataSource" runat="server"
    > >> ViewDataKey="Computers" />

    >
    > >> Because evidently "ext" doesn't mean anything in asp.net.

    >
    > >> But, back to my point about simple-array-binding-repeater-thingamajigs,
    > >> this
    > >> approach
    > >> seems like overkill for such a trivial task anyhow.

    >
    > >> Can someone please enlighten me?  All productive answers will be
    > >> extremely
    > >> appreciated!

    >
    > >> Thanks,
    > >> Roger

    >
    > > Hello Roger.
    > > There is no runat="server" in MVC Views. You don't use aspnet common
    > > controls with MVC, so forget about Repeaters, DataGrids, etc.
    > > Take a deeper look at some MVC tutorials, specially a foreach loop in
    > > a view, in order to get something like a repeater effect.
    > >http://blogs.msdn.com/b/brada/archive/2008/01/29/asp-net-mvc-example-...

    >
    > > Best regards

    >
    > > Oscar Acosta


    Hello Roger:
    Here you'll find a good tutorial to get started with mvc. Just try to
    don't thing in classic asp.net terms and you'll get it.
    http://weblogs.asp.net/scottgu/archive/2009/03/10/free-asp-net-mvc-ebook-tutorial.aspx

    Best regards.
     
    Cubaman, Jun 9, 2010
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. rmn190
    Replies:
    2
    Views:
    2,366
    Arne Vajhøj
    Jan 10, 2008
  2. shapper

    MVC - ViewData

    shapper, Sep 14, 2008, in forum: ASP .Net
    Replies:
    0
    Views:
    593
    shapper
    Sep 14, 2008
  3. Paulo
    Replies:
    3
    Views:
    480
    Peter Bromberg [C# MVP]
    Dec 4, 2008
  4. Crazy Cat
    Replies:
    1
    Views:
    688
    schepp
    Sep 3, 2009
  5. Michael
    Replies:
    0
    Views:
    225
    Michael
    Dec 29, 2003
Loading...

Share This Page