2015-01-16 2 views
0

[QuestionID] [Description] [User_id] 테이블이 있습니다.ASP.NET MVC 5 empty ApplicationUser

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

사용자가 양식을 사용하여 질문을 보내고 모든 필드가 올바르게 저장되면 질문이 데이터베이스에 저장됩니다.

는 내가보기에 모든 질문에 내 QuestionController에서 목록을 보내 :

@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 제외하고 작동 : 내보기에서

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

내가 그 목록을 사용하여 아무 값도 표시하지 않습니다 (데이터베이스에 채워짐). 왜이게 비어 있니? 사용자 정보를 표시하려면 어떻게해야합니까?

편집 :

내가 코드를 우선 사용하고 이것이 내가 데이터베이스에 입력하는 방법입니다 : "

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

는 컨트롤러의 빈 ID는 전에인가 그것을보기로 보냅니 까? 뷰 모델을 사용하지 않는 이유는 무엇입니까? - '복잡한'객체의 직렬화 (경우에 따라 중첩/계층화 됨)가 MVC에서 잘 수행되지 않는 경우가 많습니다.보기로 전달하는 항목을 하나의 평면 ViewModel 객체로 단순화하십시오. 또는 같은 시도 ((ApplicationUser) item.user) .id –

+0

목록에서 만들어진 동일한 컨트롤러에서 데이터베이스에서 하나의 질문 개체를 얻을 때 그것은 또한 비어 있지 않은 사용자가 데이터베이스를 제공합니다. 따라서 가장 좋은 방법은 View Model을 사용하고 Application User를 Question Model에서 제거하는 것입니다. – user3231419

+1

은 먼저 db.Questions를 채우는 데 사용하는 코드를 보여줍니다. EntityFramework를 사용하고 있습니까? 그렇다면 ApplicationUser가 엔티티 인 경우 ApplicationUser에 질문 (외부 키 사용)에 대한 탐색 속성이 올바르게 설정되지 않았거나 정보 검색에 사용 된 쿼리가 올바르지 않거나 EF의 매핑이 올바르지 않습니다 올바른, datbase를 먼저 사용했다면 올바른 것이어야합니다. 코드를 처음 사용했다면 버그 일 수 있습니다. –

답변

2

당신이 시도해 봤어 : 양식 한 후 데이터베이스 결과

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

예 공개 가상 응용 프로그램 사용자 {get; set;} "?

난 당신이 ApplicationUser 등록 정보에 액세스 또는 "@ Html.DisplayFor (modelItem => item.user)"을보기에 코드를 변경하는 것을 가상하게 생각

+0

솔루션이 작동했습니다! – user3231419