2016-03-31 3 views
1

У меня есть вид (указатель), который отображает данные из модели (TBL_PROJECT).ASP.NET MVC. Как отображать тест вместо id на странице просмотра?

@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 Paint 1
1998 Очистка 1

мне нужен статус, чтобы быть в тексте, который находится в другой модели (TBL_STATUS).
Что мне делать?
Это TBL_STATUS модель

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



Это контроллер

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

Обновление: я узнал, таким образом, как это сделать. В модели (TBL_PROJECT) добавить следующее:

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

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


и при вызове его в представлении: ...

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


Теперь у меня есть еще один вопрос. Тот же вопрос, я хочу добавить район (который является int в TBL_PROJECT, который относится к другой модели (TBL_DISTRICT)).

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

Теперь в моей TBL_PROJECT модели, добавить эти:

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

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


И в представлении:

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

Нет ошибки, но она ничего не вернула. Нужно ли добавлять ограничения между этими таблицами (TBL_PROJECT & TBL_DISTRICT)?

+0

Я настоятельно рекомендую использовать зрения модели: http://wildermuth.com/2015/7/22/Mapping_Between_Entities_and_View_Models – freshbm

ответ

0

Найдено ответ. Я положил эту первую строку в контроллер.

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

Я просто добавить еще Include (х => x.TableName)

0

Добавить следующую строку в TBL_PROJECT Model.

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

Затем изменить вид

@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

Используйте @Html.Display(item.PROJ_STATUS.ToString())

Смежные вопросы