Контроллеры Asp.NET MVC со строгой типизацией - PullRequest
2 голосов
/ 25 февраля 2010

Я видел где-то код, подобный этому:

return View(x=>x.List());

Вместо

return View("List");

Что мне нужно для этого?

Я использую Asp.net MVC 2 RC 2

РЕДАКТИРОВАТЬ Я не имею в виду строго типизированные представления

Следующий пример

return this.RedirectToAction(c => c.Speaker());

Ответы [ 3 ]

4 голосов
/ 25 февраля 2010

Сильно типизированный RedirectToAction предоставляется проектом MvcContrib .

return RedirectToAction(c => c.Speaker());

return RedirectToAction<OtherController>(c => c.Speaker());
1 голос
/ 25 февраля 2010

Я не уверен, что вы ожидаете от возврата к вызову метода View, в котором в качестве параметра используется другое действие контроллера. Как вы указали, RedirectToAction имеет такое поведение, а также некоторые вспомогательные методы Html, такие как:

<%= Html.ActionLink<myController>(x => x.Index(), "My Action") %>
1 голос
/ 25 февраля 2010

Это не контроллер, который строго типизирован ... это представление.

Чтобы получить строго типизированное представление, вы можете использовать подсказки из инструментов VS MVC, щелкнуть правой кнопкой мыши на действии и выбрать «Создать строго типизированное представление», а затем выбрать подходящий бизнес-объект, который будет действовать в качестве вашей модели. или вы можете напрямую изменить страницу, изменив ее атрибут Inherits директивы Page на System.Web.Mvc.ViewPage, где SomeModel - это модель, которая реализует свойство «Список» и модель, которая будет привязана к странице.

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SomeModel>" %>

Кроме того, я думаю, что вы думаете о том, как использовать в View:

<%= Html.LabelFor(m -> m.SomeValue) %>

Опять же, я не верю, что вы думаете о строго типизированном контроллере, я почти уверен, что вы видели строго типизированное представление.

Если вы пройдете учебник NerdDinner , вы будете снова и снова видеть подобные вещи.

...