Изменение шаблонов кода T4 для ASP.NET MVC, чтобы избавиться от полной ссылки на пространство имен - PullRequest
0 голосов
/ 15 февраля 2011

Мы используем (, необходимо указать, где находятся файлы, спасибо ) пользовательских шаблонов кода T4 при создании представления или контроллера.Реализация по умолчанию делает этот вид первой строкой.

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

У нас уже есть пространство имен ViewModel и MVC, определенное в Web.config, поэтому я хотел бы, чтобы шаблон кода генерировал это.

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

Любые предложения, как изменить шаблоны по умолчанию, чтобы получить такие результаты?Какие из строк шаблона на самом деле генерируют их?

Дополнительная информация

Я знаю, где находятся файлы и внесены изменения.Проблема в том, что в шаблоне они используют этот

string mvcViewDataTypeGenericString = (!String.IsNullOrEmpty(mvcHost.ViewDataTypeName)) ? "<" + mvcHost.ViewDataTypeName + ">" : String.Empty;

Кажется, что ViewDataTypeName содержит полную ссылку на пространство имен.Я хотел бы получить только имя класса (в данном случае имя класса ViewModel)

1 Ответ

1 голос
/ 15 февраля 2011

Вы можете найти шаблоны здесь:

* \ Microsoft Visual Studio \ Common7 \ IDE \ ItemTemplates \ CSharp \ Web \ MVC 2 \ CodeTemplates *

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

РЕДАКТИРОВАТЬ

Источник Web.Extensions недоступен, но вы можете использовать рефлектор и размышлять о \ Microsoft Visual Studio \ Common7 \ IDE \ Microsoft.VisualStudio.Web.Extensions.dll сборка, чтобы увидеть, что дает вам "mvcHost":)

Затем вы заметите свойство ViewDataType, которое является «Типом», и вы сможете создать некоторую логику вокруг него, чтобы получить имя класса.

...