2016-03-31 20 views
1

Modelden (TBL_PROJECT) veri görüntüleyen bir görünüm (İndeks) var. olurdu görüntülenenASP.NET MVC. Görünüm sayfasında kimlik yerine test nasıl görüntülenir?

@foreach (var item in Model) 
{ 
    <tr> 
     <td> 
      @Html.DisplayFor(m => item.PROJ_YEAR) 
     </td> 
     <td> 
      @Html.DisplayFor(m => item.PROJ_NAME) 
     </td> 
     <td> 
      @Html.DisplayFor(m => item.PROJ_STATUS) 
     </td> 
    </tr> 
} 

:
1998 Boya 1
1998 Temizleme 1

başka modelde (TBL_STATUS) olduğu metinde, olması durumunu gerekir.
Ne yapmalıyım?
Bu

public class TBL_STATUS 
{ 
    public int ID { get; set; } 
    public string STATUS { get; set; } 
} 



TBL_STATUS Modeli
olan bu kontrolör

public ActionResult Index(int page = 1, string Query = null) 
{ 
    var projectList = db.TBL_PROJECTS.Include(x => x.TBL_STATUS).Where(x => x.PROJ_CAT == 1).ToList().OrderByDescending(x => x.ID); 

    if (!string.IsNullOrEmpty(Query)) 
    { 
     projectList = projectList 
      .Where(x => x.PROJ_NAME.ToLower().Contains(Query.ToLower())) 
      .ToList().OrderByDescending(x => x.ID); 
    } 
    return View(new PagedList.PagedList<TBL_PROJECT>(projectList, page, 10)); 
} 

Güncelleme: Ben bir şekilde yapmak çıkış yolu buldum. Görünümünde bunu çağrılırken

[Display(Name = "Current Status")] 
    public int PROJ_STATUS { get; set; } 

    [ForeignKey("PROJ_STATUS")] 
    public TBL_STATUS TBL_STATUS { get; set; } 


ve: modeli (TBL_PROJECT) ben bu eklentiyi ...


<td> 
    @Html.DisplayFor(m => item.TBL_STATUS.STATUS) 
</td> 

Şimdi Başka bir sorunum var. Aynı sorun, bir ilçe eklemek istiyorum (başka bir modele (TBL_DISTRICT) başvuran TBL_PROJECT'te bir int).

public class TBL_DISTRICT 
{ 
    public int ID { get; set; } 
    public string DIST_NAME { get; set; } 
    public string DIST_OFFICE { get; set; } 
    public string DIST_CODE { get; set; } 
} 

Şimdi benim TBL_PROJECT modelinde, ben bu ekleyin:

[Display(Name = "District")] 
    public int DISTRICT { get; set; } 

    [ForeignKey("DISTRICT")] 
    public TBL_DISTRICT TBL_DISTRICT { get; set; } 


Ve

görünümde:

@ Html.DisplayFor (m => item.TBL_DISTRICT .DIST_NAME)

Hata yok, ancak hiçbir şey döndürmedi. Bu tablolar arasında kısıtlama eklemem gerekir mi (TBL_PROJECT & TBL_DISTRICT)?

+0

şiddetle Görünüm Modelleri kullanarak öneriyoruz: http://wildermuth.com/2015/7/22/Mapping_Between_Entities_and_View_Models – freshbm

cevap

0

cevabı bulundu. İlk satırı kontrol cihazına koydum.

var projectList = db.TBL_PROJECTS.Include(x => x.TBL_STATUS).Include(x => x.TBL_DISTRICT).Where(x => x.PROJ_CAT == 1).ToList().OrderByDescending(x => x.ID); 

ben sadece başka (x => x.TableName) dahil eklemek

0

Aşağıdaki satırı TBL_PROJECT Modeline ekleyin.

public class TBL_PROJECT 
{ 
//Code you have 
public virtual TBL_STATUS TBL { get; set; } 
} 

Sonra yabancı anahtar referansı kullanmak Arkadan görünüş

@foreach (var item in Model) 
     { 
       <tr> 
        <td> 
         @Html.DisplayFor(m => item.PROJ_YEAR.STATUS) 
        </td> 
        <td> 
         @Html.DisplayFor(m => item.PROJ_NAME) 
        </td> 
        <td> 
         @Html.DisplayFor(m => item.TBL.STATUS) 
        </td> 
       </tr> 
      } 
-1

Kullanım @Html.Display(item.PROJ_STATUS.ToString())

İlgili konular