Asp.net mvc MVC访问listboxFor的导航属性

Asp.net mvc MVC访问listboxFor的导航属性,asp.net-mvc,asp.net-mvc-3,model-view-controller,Asp.net Mvc,Asp.net Mvc 3,Model View Controller,首先,我应该说我是MVC的完全新手。 我有三个物体 public partial class Magazine { public Magazine() { this.NumberTitles = new HashSet<NumberTitle>(); } public int Id { get; set; } public int MagYear { get; set; } public int MagNo { ge

首先,我应该说我是MVC的完全新手。 我有三个物体

 public partial class Magazine
{
    public Magazine()
    {
        this.NumberTitles = new HashSet<NumberTitle>();
    }

    public int Id { get; set; }
    public int MagYear { get; set; }
    public int MagNo { get; set; }
    public int MagSeason { get; set; }
    public string MagYear2 { get; set; }

    public virtual ICollection<NumberTitle> NumberTitles { get; set; }
}

public partial class NumberTitle
{
    public NumberTitle()
    {
        this.Articles = new HashSet<Article>();
    }

    public int Id { get; set; }
    public int MagazineId { get; set; }
    public int TitleId { get; set; }
    public int position { get; set; }

    public virtual ICollection<Article> Articles { get; set; }
    public virtual Magazine Magazine { get; set; }
    public virtual Title Title { get; set; }
}


public partial class Title
{
    public Title()
    {
        this.ChildrenTitle = new HashSet<Title>();
        this.NumberTitles = new HashSet<NumberTitle>();
    }

    public int Id { get; set; }
    public string TitleText { get; set; }
    public Nullable<int> ParentId { get; set; }

    public virtual ICollection<Title> ChildrenTitle { get; set; }
    public virtual Title ParentTitle { get; set; }
    public virtual ICollection<NumberTitle> NumberTitles { get; set; }
}
公共部分类杂志
{
公共杂志()
{
this.NumberTitles=new HashSet();
}
公共int Id{get;set;}
公共整型年表{get;set;}
公共int MagNo{get;set;}
公共整数{get;set;}
公共字符串MagYear2{get;set;}
公共虚拟ICollection NumberTitles{get;set;}
}
公共部分类号
{
公众号码()
{
this.Articles=new HashSet();
}
公共int Id{get;set;}
公共int-MagazineId{get;set;}
公共int TitleId{get;set;}
公共int位置{get;set;}
公共虚拟ICollection项目{get;set;}
公共虚拟杂志{get;set;}
公共虚拟标题{get;set;}
}
公共部分类名
{
公开名称()
{
this.ChildrenTitle=new HashSet();
this.NumberTitles=new HashSet();
}
公共int Id{get;set;}
公共字符串TitleText{get;set;}
公共可为空的ParentId{get;set;}
公共虚拟ICollection ChildrenTitle{get;set;}
公共虚拟标题ParentTitle{get;set;}
公共虚拟ICollection NumberTitles{get;set;}
}
在一个视图中,我想有一个文本框来显示杂志编号和两个列表框。一个显示所有可用的标题,另一个只是为该杂志编号选择的标题

public class NumberTitleViewModel
{       
    public Magazine Magazine { get; set; }
    public List<NumberTitle> NumberTitles { get; set; }
}
公共类编号rtitleViewModel
{       
公共杂志{get;set;}
公共列表编号{get;set;}
}
这是在控制器中。如何获取指定MagazineId的标题列表

    public ActionResult EditTitle(int id)
    {
        Func<IQueryable<Magazine>, IOrderedQueryable<Magazine>> orderByFunc = null;
        Expression<Func<Magazine, bool>> filterExpr = null;
        if (id>0)
        {
            filterExpr = p => p.Id.Equals(id);
        }

        Magazine magazine = unitOfWork.MagazineRepository.Get(filter: filterExpr, orderBy: orderByFunc, includeProperties: "").SingleOrDefault();
        NumberTitleViewModel numberTitleViewMode = new NumberTitleViewModel();
        numberTitleViewMode.Magazine = magazine;
        Expression<Func<NumberTitle, bool>> filterExpr2 = null;
        if (id > 0)
        {
            filterExpr2 = p => p.MagazineId.Equals(id);
        }
        var numberTitles = unitOfWork.NumberTitleRepository.Get(filterExpr2, null, includeProperties: "Title").ToList();

        var titles = unitOfWork.TitleRepository.Get(null, null, "");
        numberTitleViewMode.NumberTitles = numberTitles; ///this part doesn't show the Titles. how should access the TitleName not Id
        ViewBag.titles = new SelectList(titles, "Id", "TitleText");
        return View("../Panel/Magazine/EditTitle", "_BasicLayout", numberTitleViewMode);
    }
public ActionResult编辑标题(int-id)
{
Func orderByFunc=null;
表达式filterExpr=null;
如果(id>0)
{
filterExpr=p=>p.Id.Equals(Id);
}
杂志杂志=unitOfWork.MagazineRepository.Get(筛选器:filterExpr,orderBy:orderByFunc,includeProperties:).SingleOrDefault();
NumberTitleViewModel numberTitleViewMode=新的NumberTitleViewModel();
numberTitleViewMode.Magazine=刀库;
表达式filterExpr2=null;
如果(id>0)
{
filterExpr2=p=>p.MagazineId.Equals(id);
}
var numberTitles=unitOfWork.NumberTitleRepository.Get(filterExpr2,null,includeProperties:“Title”).ToList();
var titles=unitOfWork.TitleRepository.Get(null,null,“”);
numberTitleViewMode.NumberTitles=NumberTitles;///此部分不显示标题。如何访问标题名而不是Id
ViewBag.titles=新的选择列表(标题,“Id”、“TitleText”);
返回视图(“../Panel/Magazine/EditTitle”、“\u BasicLayout”、numberTitleViewMode);
}

不确定您的视图中有什么内容,但您应该有如下内容:

@using NameSpace.Models
@model NameSpace.Models.NumberTitleViewModel
然后,您可以在您的视图中执行以下操作:

 foreach (NumberTitles item in   @Model)
    {
        <label>@item.Title.TitleText</label>
    }
foreach(@Model中的numbertiles项)
{
@item.Title.TitleText
}

不精确,但应该让您接近所需的内容

我应该如何将两个模型从控制器传递到视图?看起来您已经在返回视图中(字符串、字符串、对象)