在mvc5中使用ado.net创建动态菜单

时间:2019-01-31 10:30:59

标签: c# asp.net asp.net-mvc-5 ado.net

我想创建动态菜单,所以首先我创建了模型,然后在action方法中,我们从数据库中获取数据并添加到列表中 接下来,我需要将列表填充到视图菜单中,这是我正在使用的_layout页面

@Html.ActionLink(item.LinkText,item.Actionname,item.routeValue)                            

public class Menu
{       
    public string LinkText { get; set; }
    public string Actionname { get; set; }
    public string routeValue { get; set; }
    public List<Menu> menu { get; set; }
}


public ActionResult Index()
{     
    List<Menu> mlist = new List<Menu>();
    //List<Menu> m = new List<Menu>();
    Menu m = new Menu();
    using (SqlConnection conn = new SqlConnection(Cstring))
    {
        conn.Open();
        SqlDataReader myReader = null;
        SqlCommand myCommand = new SqlCommand("SELECT  [TextLinkName],[ActionLinkName],[Routevalue]  FROM [MVCTESTING].[dbo].[tbl_MainMenu]", conn);
        myReader = myCommand.ExecuteReader();

        while (myReader.Read())
        {

            m.LinkText = (string)myReader["TextLinkName"];
            m.Actionname = (string)myReader["ActionLinkName"];
            m.routeValue = (string)myReader["Routevalue"];
            mlist.Add(m);
        }

    }
    return View(mlist);

   // return View();
}
<ul class="dropdown">
          @if (Model != null)
          {
             foreach (var item in Model.menu)
                {
                    @Html.ActionLink(item.LinkText,item.Actionname,item.routeValue)
                }
             }
        </ul>

我面临的错误

错误:

  

传递到字典中的模型项是类型   'System.Collections.Generic.List`1 [WebApplication1.Models.Menu]',但是   这本字典需要类型的模型项   “ WebApplication1.Models.Menu”。

1 个答案:

答案 0 :(得分:0)

您的后端还可以,但是页面顶部的类型是错误的,当您传递菜单列表时,应该在页面_layout上收到相同的内容,只需添加以下行即可:

@model List<WebApplication1.Models.Menu>