Как сделать эту модель в ASP.NET MVC3? - PullRequest
1 голос
/ 07 мая 2011

Я довольно новичок в ASP.NET MVC, на самом деле это мой первый проект, использующий его. Я хочу создать простой TaskList. У меня все хорошо в ASP.NET, но я почти ничего не знаю о ASP.NET MVC или Linq, поэтому имейте это в виду при ответе.

Я использую CodeFirst Entity Frameword для генерации БД.

У меня есть две таблицы Users (id, name) и Tasks (id, userid, name). Я создал два объекта Model, которые содержат свойства Users и Tasks. Поэтому вместо использования int userID в качестве дизайна базы данных у меня есть класс User внутри класса Task для подключения Task к определенному пользователю.

Каким-то образом мне удалось создать соединение с помощью LINQ

   var model = from t in _db.Tasks
                join u in _db.Users on t.User.ID equals u.ID
                select new { UserID = u.ID,UserName = u.Name,t.Name,t.ID };
    return View(model);

но я не могу связать его с представлением, я связал его с моделью задач, которая, вероятно, вызывает эту ошибку.

Как мне решить эту проблему, может быть, мне нужна какая-то модель представления или что-то в этом роде?

Спасибо ...

Ответы [ 2 ]

1 голос
/ 07 мая 2011

Вы должны создать ViewModel и передать его вашему представлению:

public class TaskViewModel
{
    public int TaskId { get; set; }
    public string TaskName { get; set; }
    public int UserId { get; set; }
    public int Username { get; set; }
}

Чем создать строго типизированное представление:

@model IEnumerable<YourNamespace.Models.TaskViewModel>
//Display model data

И запрос Linq:

var model = from t in _db.Tasks
            join u in _db.Users on t.User.ID equals u.ID
            select new TaskViewModel
            {
                TaskId = t.ID,                    
                TaskName = t.Name,
                UserId = u.ID,
                Username = u.Name
            };
1 голос
/ 07 мая 2011

Ваш запрос Linq использует так называемое отложенное выполнение. Это означает, что сам запрос не содержит записей, и вы должны что-то с ним сделать, чтобы он выполнялся.

Так попробуйте это:

return View(model.ToList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...