2012-04-10 2 views
0

Я только начинаю исследовать ASP.NET MVC, и использую последнюю бета-версию (т. Е. 4). Я после правильного подхода к тому, что является довольно CRUD-сценарием. Моя главная таблица (Task) выглядит примерно так -ASP.NET MVC - обновление внешних ключей

TaskID (интермедиат) EmployeeID (целое) ProjectID (целое) DeptID (INT) Комментарий (VARCHAR) Даты (даты и время) часов (с плавающей точкой)

TaskID - это первичный ключ. Остальные три идентификатора - все внешние ключи в справочные таблицы.

Следуя различным учебникам, я создал объектную модель (.edmx) с использованием Entity Framework. Затем я автогенерировал контроллер, используя «Add ... Controller» и выбрав шаблон «Контроллер с чтением/записью ...».

Все хорошо сработало. Однако, очевидно, я хочу, чтобы три столбца внешнего ключа отображали значения поиска из ссылочных таблиц, а не идентификатор. Я действительно не уверен, что метод «лучшей практики» для достижения этого. Несколько вариантов происходит со мной -

  1. Создать представление в SQL Server
  2. Создать представление в EF (не уверен, как это делается)
  3. Посмотрите на эталонные значения на лету с помощью LINQ в контроллеры

Возможно, существуют и другие способы. Я хотел бы услышать от опытных MVC-прогов относительно «лучшей практики» в этом сценарии.

ответ

2

предпочел бы иметь класс TaskViewModel, который будет иметь свойства что-то вроде этого

public class TaskViewModel 
{ 
    public Task Task { get; set; } 
    public Dictionary<int, string> ProjectList { get; set; } 
    //rest of the Lookup Properties like DeptList, EmpList 
} 
public class Task 
{ 
    public int TaskId { get; set; } 
    public int projectId { get; set; } 
    //Rest of the properties 
} 

И будет использовать

@model TaskViewModel 
@Html.DropDownListFor(m => m.Task.projectId, new SelectList(Model.ProjectList, "key", "value", Model.Task.projectId))%> 
+0

Где бы вы заполнить модель представления? В контроллере? –

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