none
WebGrid Farklı Tablolardan Kayıt Getirme Sorunu [ASP.NET MVC5] RRS feed

  • Soru

  • Merhaba,

    WebGrid'de Kullanıcıları listelemek ve her kullanıcının yanında selectboxta database'de

    tanımlananan Rolleri listelemek istiyorum. Fakat 'object' bir 'ROLE_NAME' tanımı içermiyor

    hatası alıyorum. Yardımcı olur musunuz?
    Model.cs

    public ActionResult RolGiveTake() { ViewBag.UserBag = (from k in db.Kullanicilar join r in db.Roller on k.ROLE_ID equals r.ROLE_ID select new { USER_NICK = k.USER_NICK, ROLE_NAME = r.ROLE_NAME, ROLE_ICON_PATH = r.ROLE_ICON_PATH }).ToList(); ViewBag.RolBag = db.Roller.ToList(); return View(); }


    View.cshtml
    @model dynamic
    @{
        ViewBag.Title = "Index";
        Layout = "~/Views/Shared/_LayoutControlPanel.cshtml";
        var gridViewUser = new WebGrid(ViewBag.UserBag, defaultSort: "ROLE_ID", canPage: true, rowsPerPage: 20);
       
    }
    <div name="user_list" id="user_list">
                    @gridViewUser.GetHtml(
                        tableStyle: "myTablePink",
                        headerStyle: "myTablePink",
                        footerStyle: "myTablePinkFoot",
                        alternatingRowStyle: "myTablePinkAlternateRow",
                        rowStyle: "myTablePinkRow",
                        mode: WebGridPagerModes.All,
                        columns: gridViewUser.Columns(
                        gridViewUser.Column("USER_NICK", "Nick"),
                        gridViewUser.Column(header:"Rol",format:
                        @<text>
                        <select id="roles" name="roles">
                            <option selected>Seçiniz</option>
                            @foreach (ROLE r in ViewBag.RolBag)
                            {
                                <option>@r.ROLE_NAME</option>
                            }
                        </select>
                        </text>)
                    )
                 )
                </div>



    • Düzenleyen kAaNnN 14 Mart 2016 Pazartesi 20:46
    14 Mart 2016 Pazartesi 20:45

Tüm Yanıtlar

  • Aslında MVC "kolaylık" amaçlı bir sistem, siz oldukça zorlaştırmışsınız. Şöyle yapsanız;

    public async Task<ActionResult> RolGiveTake()
            {
                var users = await (from k in db.Kullanicilar  
                                join r in db.Roller
                                on k.ROLE_ID equals r.ROLE_ID
                                select new
                                {
                                    USER_NICK = k.USER_NICK,
                                    ROLE_NAME = r.ROLE_NAME,
                                    ROLE_ICON_PATH = r.ROLE_ICON_PATH
                                }).ToListAsync();
    
                ViewData["roles"] = new SelectList(await db.Roller.ToListAsync(), "ROLE_NAME", "ROLE_NAME");
                return View(users);
            }

    daha sonra view'inizde;

    @model IEnumerable<Kullanici>
    @{
        ViewBag.Title = "Index";
        Layout = "~/Views/Shared/_LayoutControlPanel.cshtml";
        var gridViewUser = new WebGrid(Model, defaultSort: "ROLE_ID", canPage: true, rowsPerPage: 20);
        
    }
    <div name="user_list" id="user_list">
                    @gridViewUser.GetHtml(
                        tableStyle: "myTablePink",
                        headerStyle: "myTablePink",
                        footerStyle: "myTablePinkFoot",
                        alternatingRowStyle: "myTablePinkAlternateRow",
                        rowStyle: "myTablePinkRow",
                        mode: WebGridPagerModes.All,
                        columns: gridViewUser.Columns(
                        gridViewUser.Column("USER_NICK", "Nick"),
                        gridViewUser.Column(header:"Rol",format:
                        @<text>
                        @Html.DropdownList(ViewData["roles"] as SelectList, "Seçiniz..");
                        </text>)
                    )
                 )
                </div>

    yapsanız daha düzgün olmaz mı.

    Aslında simplemembership varken kullanıcı ve rol işleri ile uğraşmak ayrı bir angarya olmuş o da ayrı konu.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    14 Mart 2016 Pazartesi 23:28
    Moderatör
  • Önay Bey,

    Öncelikle cevabınız için teşekkür ederim. MVC'de ilk projem olduğu için henüz MVC'ye hakim değilim . Söylediklerinizi uyguladım fakat bu kez de aşağıdaki hatayı almaktayım.

    The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[<>f__AnonymousType2`3[System.String,System.String,System.String]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[MyProject.Models.Kullanici]'

    15 Mart 2016 Salı 20:27
  • Bana teamviewer id ile birlikte bir mail atabilirmisiniz, burada soru cevap şeklinde düzeltmek zor olur.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    16 Mart 2016 Çarşamba 06:53
    Moderatör
  • Konu hala aktiftir
    20 Mart 2016 Pazar 11:14