2009-05-12 2 views
2

У меня есть контроллер с тем, что я хочу передать некоторые данные в представление.Из контроллера принудительно вводить требуемый параметр в строго типизированном представлении MVC?

Вид сильно типизированных как:

System.Web.Mvc.ViewPage<SomeObject> 

Теперь, когда я звоню следующее в контроллере:

return View("SomeAction", someObject); 

Я хочу, чтобы обеспечить соблюдение, что мне нужно пройти в «SomeObject».

Например. Я хочу, чтобы следующие потерпеть неудачу и не компилировать:

View("SomeAction"); 

Независимо от того, что ожидаемый объект всегда должен быть передан в представление.

Возможно ли это, или я полностью от основания?

ответ

1

я бы просто написать тест для этого случая и не беспокоить для отдыха:

var actual = controllerUnderTest.Action() as ViewResult; 
Assert.IsNotNull(actual.ViewData.Model); 
Assert.IsInstanceOfType(actual.ViewData.Model, typeof(SomeObject)); 
+0

Я предпочел бы, чтобы компилятор поднять его и, возможно, даже IntelliSense, чтобы помочь другим, а не ждать теста чтобы найти ошибки. Это суть того, что я пытаюсь получить от вопроса. – Kelsey

+3

До тех пор, пока ваш контроллер не будет получен из System.Web.Mvc.Controller, ничто (во время компиляции) не сможет запретить разработчикам вызывать метод Controller.View («abc») и НЕ передавать модель. Вместо этого вы можете активировать действие CustomViewResult вместо ActionResult. Этот CustomViewResult может быть получен из ViewResult и «принудительного применения» модели в определяемом вами публичным конструктором. –

Смежные вопросы