ASP.NET MVC3 как ссылаться на представления непосредственно с контроллера

в моем контроллере я хочу указать другой вид, чем по умолчанию. Вот так:

public ActionResult EditSurvey(Int32 id)
    {

        Survey survey = _entities.Surveys.Single(s => s.Id == id);

        return View("Survey",survey);
    }

но вместо того, чтобы указывать представление как строку ("обзор"), я хотел бы ссылаться на нее напрямую, поэтому, если я решу изменить имя моего представления позже, мне не нужно менять эту строку вручную.

поэтому я ищу что-то вроде этого :

public ActionResult EditSurvey(Int32 id)
    {

        Survey survey = _entities.Surveys.Single(s => s.Id == id);

        return View(Views.Admin.Survey,survey);
    }

1 ответов


хороший вопрос, нет встроенной поддержки как View() метод ожидает строку, но есть отличный инструмент под названием T4MVC создано Дэвид Ebbo это делает именно это.

в документации по codeplex есть процедура установки вручную, я бы рекомендовал получить ее с помощью диспетчера пакетов NuGet прямо из VS2010.

это довольно просто, все дело в файлах, которые вы можете просто добавить в свой проект. (T4MVC.tt и T4MVC.settings.t4), каждый раз, когда вы измените ваш код (1) щелкните правой кнопкой мыши T4MVC.ТТ и (2) клик "Запустить Пользовательский Инструмент".

он создает класс с подклассами, членами, свойствами для всех ваших контроллеров и представлений. Он даже создает сильные типы для всего вашего контента, такие как изображения, css, js и т. д. (Что, я думаю, просто потрясающе)

примеры:
этой

@Html.RenderPartial("DinnerForm");

будет быть:

@Html.RenderPartial(MVC.Dinners.Views.DinnerForm);

это:

@Html.ActionLink("Delete Dinner", "Delete", "Dinners", new { id = Model.DinnerID }, null)

было бы это вместо этого:

@Html.ActionLink("Delete Dinner", MVC.Dinners.Delete(Model.DinnerID))

это :

<img src="/Content/nerd.jpg" />

было бы это вместо этого:

<img src="@Links.Content.nerd_jpg" />

вы должны щелкнуть правой кнопкой мыши на tt файл и "запустить пользовательский инструмент", как упоминалось ранее, каждый раз, когда вы меняете свои представления, контроллеры, однако, если вы хотите автоматизировать это, Проверьте Chirpy что это и больше.

(Примечание T4MVC имеет примеры aspx/mvc2 в документах, но отлично работает на MVC3, поскольку я использую в производстве с приложением MVC3/Razor)

см. Также тег T4MVC так.