0

こんにちは、コントローラからパーシャルビューを呼び出すと、エラーCS1061が発生します。MvcとEFを含む別々のプロジェクトでソリューションを使用しています。

私のモデルはMenuエンティティとMenuItemエンティティ(EFから省略)です。

public partial class Menu : EntityObject
{
#region Propiedades primitivas
public global::System.Int32 Id
public global::System.String Name
#region Propiedades de navegación
[EdmRelationshipNavigationPropertyAttribute("DAL_EF_Model", "MenuMenuItem", "MenuItem")]
    public EntityCollection<MenuItem> MenuItems

..。

public partial class MenuItem : EntityObject
{
#region Propiedades primitivas
public global::System.Int32 Id
public global::System.String Name
public global::System.String ActionName
public global::System.String ControllerName
public global::System.String Url

..。

コントローラは:..。

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult MenuLayout(string name)
    {
        if (db.Menus.Count<Menu>() > 0 &&
            db.MenuItems.Count<MenuItem>() > 0)
        {
            //var todos = new MenuV();
            //todos = db.Menus.ToList();
            List<Menu> otros = db.Menus.ToList();
            foreach (var opcion in db.Menus)
            {
                List<Menu> menu = db.Menus
                    .Include("MenuItems")
                    .ToList();
                    //.Single<Menu>(m => m.Name == opcion.Name);
                return PartialView("_MenuLayout", menu);
            }
            return PartialView("_MenuLayout", null);
        }
        else
        {
            return PartialView("_MenuLayout", null);
        }
    }

..。

そして、partialview _MenuLayout.cshtml:

@model IEnumerable<DAL_EF.Menu>
<div id="accordion">
 <div><h3><a href="#"> ERP </a></h3>
   @{
    if (Model != null)
    {
        <div><ul>
        @foreach (var item in Model.MenuItems)
        {
            <li id="@item.Name">@Html.ActionLink(
            @item.Name,
            @item.ActionName,
            @item.ControllerName)</li>
        }
        </ul></div>
    }
}
 </div> 
</div>

エラーはで発生します

IEnumerable<DAL_EF.Menu>

私が使用する場合

.Single<Menu>

コントローラから、partialviewが受信します

 DAL_EF.Menu

それはうまくいきます。

完全なエラーメッセージは次のとおりです。

    {"_MenuLayout.cshtml(21): error CS1061: 'System.Collections.Generic.IEnumerable<DAL_EF.Menu>' no contiene una definición de 'MenuItems' ni se encontró ningún método de extensión 'MenuItems' que acepte un primer argumento de tipo 'System.Collections.Generic.ICollection<DAL_EF.Menu>' (¿falta una directiva using o una referencia de ensamblado?)"}
4

1 に答える 1

0
@model IEnumerable<DAL_EF.Menu>

これは、モデルがタイプ IEnumerable< DAF_EL.Menu > であることを指定します。ただし、モデルを DAL_EF.Menu 型であるかのように使用しています。

@foreach (var item in Model.MenuItems)

エラー メッセージが示すように、IEnumerable< DAL_EF.Menu > (これはあなたのモデルです) には MenuItems というプロパティがありません。

おそらく、モデル内の各メニューをループしてから、各メニューの各 MenuItem をループする、このようなものが必要になるでしょう。

@foreach (Menu menu in Model)
{
    @foreach(var item in menu.MenuItems)
    {
        .. do your stuff ..
    }
}
于 2012-08-17T04:11:50.257 に答える