2016-03-31 3 views
1

Ich habe eine Ansicht (Index), die Daten von einem Modell (TBL_PROJECT) anzeigen.ASP.NET MVC. Wie man Test anstelle von Identifikation in der Ansichtseite anzeigt?

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

Wenn angezeigt, es wäre:
1998 Farbe 1
1998 Reinigung 1

Ich brauche den Status im Text zu sein, die in einem anderen Modell ist (TBL_STATUS).
Was soll ich tun?
Dies ist TBL_STATUS Modell

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



Dies ist der Controller

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

Update: Ich fand die Art und Weise, einen Ausweg, es zu tun. Im Modell (TBL_PROJECT) Ich füge diesen:

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

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


und wenn es in der Ansicht Aufruf: ...

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


Jetzt habe ich ein anderes Problem. Gleiches Problem, ich möchte einen Bezirk hinzufügen (der ein Int im TBL_PROJECT ist, der auf ein anderes Modell (TBL_DISTRICT) verweist).

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

nun in meinem TBL_PROJECT Modell, füge ich diese:

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

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


Und in der Ansicht:

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

Theres kein Fehler aber es gab nichts zurück. Muss ich eine Einschränkung zwischen diesen Tabellen hinzufügen (TBL_PROJECT & TBL_DISTRICT)?

+0

Ich würde mit der Ansicht Modelle wird dringend empfohlen: http://wildermuth.com/2015/7/22/Mapping_Between_Entities_and_View_Models – freshbm

Antwort

0

die Antwort gefunden. Ich lege diese erste Zeile in den Controller.

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

ich nur hinzufügen, eine andere Include (x => x.TableName)

0

Fügen Sie die folgende Zeile in das TBL_PROJECT-Modell ein.

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

ändern dann die Ansicht

@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

Verwenden @Html.Display(item.PROJ_STATUS.ToString())

Verwandte Themen