У меня есть таблица с [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...
ли ID пустым в контроллере перед вами передать его взгляду? Почему вы не используете модель представления? - Сериализация «сложных» объектов (вложенных/многоуровневых в вашем случае) часто не выполняется MVC) ... попробуйте упростить то, что вы передаете в представление, в один плоский объект ViewModel. ИЛИ попробуйте что-то вроде ((ApplicationUser) item.user) .id –
Когда я получаю один объект Вопроса из базы данных в том же контроллере, где составлен список, он также дает пустой пользователь (хотя он не пуст, это база данных). Таким образом, наилучшей практикой было бы использовать View Model и удалить ApplicationUser из моей модели вопросов? – user3231419
показать код, который вы используете для заполнения db.Questions во-первых. Вы используете EntityFramework? Если это так, и ApplicationUser является сущностью, то у вас, возможно, нет правильных настроек навигации для Вопроса (с использованием внешнего ключа) для ApplicationUser, или запрос, который вы используете для извлечения информации, неверен, или сопоставления в EF не являются правильно, если вы сначала использовали datbase, они должны быть правильными, если вы сначала использовали код, тогда это может быть ошибка. –