2015-01-16 4 views
0

У меня есть таблица с [QuestionID] [Описание] [User_id].ASP.NET MVC 5 пустой ApplicationUser

public int QuestionID { get; set; } 
public string Description { get; set; } 
public ApplicationUser user { get; set; } 

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

Я посылаю список из моего QuestionController со всеми вопросами к моему мнению:

return View(db.Questions.ToList()); 

На мой взгляд, я использую этот список:

@foreach (var item in Model) 
{ 
    <tr> 
     <td class="td-title"> 
      @Html.DisplayFor(modelItem => item.QuestionID) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Description) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.user.id) 
     </td> 
    </tr> 
... 

Все работает, кроме item.user.id который не показывает значения (он заполняется в базе данных). Почему это пусто? И что я могу сделать, чтобы показать информацию о пользователе?

Edit:

Я использую код-первых, и это, как я заполняю в базе данных:

public ActionResult Create([Bind(Include = "QuestionID,Description")] Question question) 
{ 
    if (ModelState.IsValid) 
    { 
     question.user = UserManager.FindById(User.Identity.GetUserId()); 

     db.Questions.Add(question); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    return View(question); 
} 

Пример результата базы данных после того, как форма:

[QuestionID] [Description] [user_Id] 
     1   blalbla.. 397d27d... 
+1

ли ID пустым в контроллере перед вами передать его взгляду? Почему вы не используете модель представления? - Сериализация «сложных» объектов (вложенных/многоуровневых в вашем случае) часто не выполняется MVC) ... попробуйте упростить то, что вы передаете в представление, в один плоский объект ViewModel. ИЛИ попробуйте что-то вроде ((ApplicationUser) item.user) .id –

+0

Когда я получаю один объект Вопроса из базы данных в том же контроллере, где составлен список, он также дает пустой пользователь (хотя он не пуст, это база данных). Таким образом, наилучшей практикой было бы использовать View Model и удалить ApplicationUser из моей модели вопросов? – user3231419

+1

показать код, который вы используете для заполнения db.Questions во-первых. Вы используете EntityFramework? Если это так, и ApplicationUser является сущностью, то у вас, возможно, нет правильных настроек навигации для Вопроса (с использованием внешнего ключа) для ApplicationUser, или запрос, который вы используете для извлечения информации, неверен, или сопоставления в EF не являются правильно, если вы сначала использовали datbase, они должны быть правильными, если вы сначала использовали код, тогда это может быть ошибка. –

ответ

2

ли вы попробовать " public virtual UserUser user {get; set;} "?

Я думаю, что вы должны сделать это виртуальный доступ к свойствам ApplicationUser или изменить код на ваш взгляд, чтобы «@ Html.DisplayFor (ModelItem => item.user)»

+0

Решение работало! – user3231419

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