Nun, nehmen wir an, Sie haben einen View-Ordner namens List und einen namens Details - und das Model in den beiden sollte anders aussehen.
Sie können einen DisplayTemplates-Ordner in jedem der beiden Ordner erstellen und ein PartialControl mit dem gleichen Namen als Ihr Modell erstellen und auch stark in Ihr Modell eingeben.
In Ihren verschiedenen Ansichten können Sie dann <%= Html.DisplayFor(your model) %>
tun, oder Sie können auch die regelmäßige <% Html.RenderParital("NameOfPartial", ModelX); %>
bearbeiten verwenden Um zu versuchen, die ursprüngliche Frage zu nähern, vielleicht das Sie in irgendeiner Weise helfen könnte (ich gepostet als eine Antwort auf eine andere Frage How to change [DisplayName“xxx”] in Controller?)
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; }
}
Vielleicht könnten Sie das benutzerdefinierte Attribut umschreiben irgendeine Art von Logik-basierte Namenswahl zu tun, und auf diese Weise die gleiche PartialView für beiden Modelle Variati verwenden ons?
Strike meinen letzten Kommentar zu meiner Antwort, da es offensichtlich schwierig ist, weg von der Single-Modell-Ansatz zu gehen, mal sehen, ob wir eine Lösung sowieso erarbeiten können. Frage: Haben Sie eine Möglichkeit, die beiden Modelle in Bezug auf die darin enthaltenen Daten zu unterscheiden? –
Grundsätzlich ja. Um unser Beispiel trivial zu halten, nehmen wir an, Modell X hat eine weitere Eigenschaft DataType (int) mit möglichen Werten 1 oder 2. – Ramunas