2015-02-03 3 views
1

저는 asp.net mvc에 상당히 익숙합니다. 내 세부 정보 페이지에서 내 세부 정보 페이지의 다른 세부 정보 페이지에 대한 링크를 추가하려고합니다. 선택한 페이지에 대한 정보를 보유하고 있습니다. 하지만 컨트롤러 나 뷰에서 어떻게 움직일 지 모르겠습니다.다른 데이터베이스 정보뿐만 아니라 항목에 대한 세부 정보를 표시하는 방법

public ActionResult Details(int? id) 
    { 
     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     Posts posts = db.Posts.Find(id); 
     if (posts == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(posts); 
    } 

나는 그것으로 이런 일을 추가하는 시도 : 여기

는 세부 정보 페이지의 컨트롤러 코드

var posts = (from p in db.Posts 
        orderby p.DateAdded descending 
        select p).Take(4); 

하지만 난 어떤 운이 havent 한. 모든 도움을 주셨습니다.

+1

무엇을 묻고 계십니까? 어떤 정보를 얻으려고하십니까? 다른 게시물에 링크를 추가하려고합니까? – Jonesopolis

+0

@Jonesy 사용자가 원하는 정보를 얻기 위해 세부 정보 페이지를 표시하려고하지만 데이터베이스에있는 게시물에 대한 링크가 4 개 더 표시됩니다. bbc 뉴스와 조금 다릅니다. 선택한 뉴스 페이지에서 오른쪽에 최신 기사 열이 표시됩니다. 다른 뉴스 기사에 대한 링크가 있습니다 – James177

+0

'Details' 페이지를 그대로 다루기는하지만보기에서 4 개의 링크가 포함 된 부분보기를 반환하는 별도의 하위 메소드를 호출하는'@ Html.Action()'메소드를 추가하십시오 –

답변

0

질문은 명확하지 않습니다. 한 게시물의 세부 정보 페이지에 4 개의 다른 게시물에 대한 링크를 표시하려고한다고 가정합니다.

이 경우에는 Details 동작에서보기로 돌아갈 뷰 모델 클래스를 만들어야합니다. 이런 식으로 뭔가 :

public ActionResult Details(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 

    Post mainPost = db.Posts.Find(id); 

    if (mainPost == null) 
    { 
     return HttpNotFound(); 
    } 

    var otherPosts = (from p in db.Posts 
         orderby p.DateAdded descending 
         select p).Take(4).ToList(); 

    var model = new PostDetailsViewModel 
    { 
     MainPost = mainpost, 
     OtherPosts = otherPosts 
    } 

    return View(model); 
} 

하는 자사의 모델로 PostDetailsViewModel을 허용하도록 Details보기를 업데이트해야합니다 :

public class PostDetailsViewModel 
{ 
    public Post MainPost { get; set; } 
    public List<Post> OtherPosts { get; set; } 
} 

는 그런 다음 컨트롤러 액션에서이 모델을 채우는 것입니다.

+0

너는 내가 찾고 있었던 일과 같아. 나는 지금 이걸 시도 할거야. – James177

관련 문제