2013-12-14 19 views
0

起初我應該說我是MVC中的新手。 我有3個對象MVC訪問列表框的導航屬性For

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; } 
} 

在查看我想有文本框,顯示雜誌號碼和2個列表框。一個顯示所有可用的標題和該雜誌對方只是選題Number.So我已經查看型號

public class NumberTitleViewModel 
{  
    public Magazine Magazine { get; set; } 
    public List<NumberTitle> NumberTitles { 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); 
    } 

回答

0

不知道你有你的觀點,但你應該有這樣的:

@using NameSpace.Models 
@model NameSpace.Models.NumberTitleViewModel 

然後,你可以做這樣的事情在你看來:

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

並不精確,但應該讓你接近你需要

+0

什麼我應該如何通過兩個型FR om控制器來查看? – nnmmss

+0

它看起來像你已經在你的返回視圖(字符串,字符串,對象) – WeisserHund