Хорошо, допустим, у вас есть какая-то папка View с именем List, а другая с именем Details - и отображение модели в двух должно быть разным.
Вы можете создать папку DisplayTemplates в каждой из двух папок.и создайте PartialControl с с тем же именем , что и у вашей модели, а также строго введите его в вашу модель.
В ваших различных представлениях вы можете затем сделать <%= Html.DisplayFor( your model) %>
или вы также можете использоватьобычный <% Html.RenderParital("NameOfPartial", ModelX); %>
Редактировать Чтобы попытаться подойти к исходному вопросу, может быть, это может вам как-то помочь (я опубликовал это как ответ на другой вопрос Какизменить [DisplayName «xxx»] в контроллере? )
public class MyDisplayName : DisplayNameAttribute
{
public int DbId { get; set; }
public MyDisplayName(int DbId)
{
this.DbId = DbId;
}
public override string DisplayName
{
get
{
// Do some db-lookup to retrieve the name
return "Some string from DBLookup";
}
}
}
public class TestModel
{
[MyDisplayName(2)]
public string MyTextField { get; set; }
}
Может быть, вы могли бы переписать пользовательский атрибут, чтобы сделать какой-то логический выбор имени, и таким образом использовать тот же PartialViewдля обеих моделей-вариаций?