2014-10-31 2 views
0

데이터베이스의 한 테이블에 대한 모델의 컨트롤러에 연결된 cshtml 뷰가 있지만 두 번째 모델을 참조하는 각 루프에 대해 a를 수행해야합니다. 두 번째 테이블. 페이지 상단에 2 개의 모델을 설정하면 foreach (var row in model)이 작동하지 않을 수 있습니다. 내가 필요한MVC보기에서 두 번째 데이터베이스 테이블 모델을 사용하는 각 루프의 경우

내가 변수와 같은 형식을 사용하고 있기 때문에 그 소리는 아니지만이

@model MVCapp.Models.COOKIE 
@using MVCapp.Models; 

@{ 
    ViewBag.Title = "Update"; 
    ; 

    foreach (var row in IEnumerable<MVCapp.Models.COOKIE_JARS) 
    { 
    some code 
    } 
} 

<h2>Update</h2> 

같은 것입니다. 그래서 내가 묻는 것은 유형을 설정하는 방법이 있다면 변수 또는 두 번째 모델에 IEnumerable<MVCapp.Models.COOKIE_JARS을 넣는 것입니다. 또는 시도하려는 두 번째 데이터베이스 테이블을 통해이 루핑을 수행하는 완전히 다른 대체 방법이있는 경우입니다.

+3

이 2 캡슐 2 개 속성을 가진 viewmodael 만들기 모델을 만들거나 할 일을 만드십시오. del a'터플 <모델 1, 모델 2>'. –

+0

오 튜플을 모델로 사용하여 생각하지 않았습니다. 그것은 조금 더러운, 나는 그것을 좋아한다 :). – Gimly

+0

'Tuple '메소드 사용'GetEnumerator'에 대한 공용 정의를 포함하지 않습니다. IEnumerable > 사용'Tuple , IEnumerable ' – RyeNyeTheComputerScienceGuy

답변

2

ViewModel 두 모델의 정보가 포함될 클래스를 만드는 것이 가장 좋은 방법입니다.

당신은 어떤 논리도 만들거나 데이터베이스에서 정보를 얻어서는 안됩니다. 이것은 컨트롤러의 목표입니다.

그래서 컨트롤러가 쿼리를 만들고 데이터를 ViewModel 개체에 추가 한 다음보기로 보냅니다.

예 :

귀하의 ViewModel :

public class CookieEatersViewModel 
{ 
    public IEnumerable<Cookie> Cookies {get; set;} 
    public IEnumerable<Monster> Monsters {get; set;} 
} 

보기 :

@model MVCApp.ViewModels.CookieEatersViewModel 

<h2>Update</h2> 

<p>Use the informations from your ViewModel here</p> 

컨트롤러 :

public ActionResult Index() 
{ 
    CookieEatersViewModel cevm = new CookieEatersViewModel(); 
    cevm.Cookies = repo.GetCookies(); 
    cevm.Monsters = repo.GetMonsters(); 

    return View(vm); 
} 
+0

"repo"는 무엇을합니까? 오류가 발생합니다. 파일 상단에 추가해야하는 어셈블리가 있습니까? – RyeNyeTheComputerScienceGuy

+1

"repo"는'저장소 '라고 부르는 샘플 이름이었습니다. http://msdn.microsoft.com/en-us/library/ff649690.aspx. "가져온 소스에서 데이터를 가져와"라고 말하는 것은 단지 샘플 일뿐입니다. – Gimly

+0

알겠습니다. 저는 MVC와 C#으로 특별하게 개발하는 데 아주 익숙해졌습니다. 그래서 저는 거의 알지 못합니다. 도와 줘서 고마워. – RyeNyeTheComputerScienceGuy

관련 문제