2009-02-05 11 views
24

Biorąc pod uwagę następujące klasy kontrolera:Jak uzyskać dane modelu z ViewResult w ASP.NET MVC RC1?

public class ProjectController : Controller 
{ 
    public ActionResult List() 
    { 
     return View(new List<string>()); 
    } 
} 

Jak mogę uzyskać referencję do obiektu modelu w następującym badanej jednostki?

public class ProjectControllerTests 
{ 
    private readonly ProjectController controller; 

    public ProjectControllerTests() 
    { 
     controller = new ProjectController(); 
    } 

    [Fact] 
    public void List_Action_Provides_ProjectCollection() 
    { 
     var result = (ViewResult)controller.List(); 

     Assert.NotNull(result); 
    } 
} 

Próbowałem wkroczyć do akcji kontrolera, aby zobaczyć, jakie wewnętrzne pola zostały ustawione, ale bez powodzenia.

Moja wiedza na temat ASP.NET MVC jest dość ograniczona, ale domyślam się, że nie konfiguruję kontrolera z poprawnym kontekstem.

Wszelkie sugestie?

Odpowiedz

37

Spróbuj:

result.ViewData.Model 

Nadzieja to pomaga.

+0

fsabau, masz absolutną rację. Nie mogę uwierzyć, że to przegapiłem. D'oh! –

6

W wersji Release Candidate środowiska Asp.Net Mvc model jest udostępniany za pośrednictwem właściwości "Model" obiektu ViewResult. Oto dokładniejsze wersja testu:

[Fact] 
public void List_Action_Provides_ProjectCollection() 
{ 
    //act 
    var result = controller.List(); 

    //assert 
    var viewresult = Assert.IsType<ViewResult>(result); 
    Assert.NotNull(result.ViewData.Model); 
    Assert.IsType<List<string>>(result.ViewData.Model); 
} 
Powiązane problemy