Benutzer mit den meisten Antworten
Wie zwei verschiedenen Objekte vom Controller an View übergeben (MVC4)?

Frage
-
Hallo,
ich verwende ASP.NET mit MVC4.
Im HomeController erzeuge ich für die View Start zwei unterschiedliche Objekte, wie kann ich beide Objekte übergeben?
Im meinem Beispiel wird nur ein Objekt übergeben.
public ActionResult Start()
{
ViewBag.Message = string.Empty;
var seoModel = new SeoModel
{
Keywords = "123",
Description = "Test."
};
var schraube = new Schraube
{
Gewinde = "M8",
Laenge = "30"
};
return this.View(seoModel);
}
In der View Start will ich beide Objekte auslesen. Wie setzt man dies um?
Im meinem Beispiel erhalte ich natürlich nur ein 'Model'.
<asp:Content ID="Content_2" ContentPlaceHolderID="MetaTagsContent" runat="server">
<meta name="Keywords" content="<%= Model.Keywords %>">
<meta name="Description" content="<%= Model.Description %>">
</asp:Content>
Alexander
Antworten
-
Hallo,
ich weiß zwar nicht was so schlimm ist wenn ein Model 2 Properties hat aber alternativ kannst du ja auch ViewBag benutzen. Das willst du aber eventuell auch nicht? Also einfach
ViewBag.Schraube = ..
ViewBag.SeoModel = ..
setzen und in der View wieder ausgeben.
Gruß
Maik
--
Maik Hanns
MCT, MCPD, MCSD
- Als Antwort markiert AlexanderRi Montag, 9. Juni 2014 10:30
Alle Antworten
-
Hallo Alexander,
erstelle doch einfach eine kleine Klasse wo "SeoModel" und "Schraube" als zwei Properties enthalten sind. Beispiel:
class MyModel { public Schraube Schraube { get; set; } public SeoModel SeoModel { get; set; } }
Diese Klasse kannst du dann nach oben geben. Die Ausgabe erfolgt dann z.B. mit Model.Schraube.Gewinde oder Model.SeoModel.Description.
Gruß
Maik
--
Maik Hanns
MCT, MCPD, MCSD
- Bearbeitet Maik Hanns Mittwoch, 4. Juni 2014 15:57
- Als Antwort vorgeschlagen Andreas Richter [anrichter] Samstag, 7. Juni 2014 11:06
-
Hallo Hanns,
danke für die Lösung. Diese funktioniert sicherlich, nur sieht diese etwas nach einer Notlösung aus.
Ich kann mir nicht vorstellen, dass Microsoft nicht vorgesehen hat, dass mehr als ein Objekttyp vom Controller an die View übergeben werden soll.
Deshalb interessiert mich die von Microsoft vorgesehene Lösung.
Alexander -
Hallo,
ich weiß zwar nicht was so schlimm ist wenn ein Model 2 Properties hat aber alternativ kannst du ja auch ViewBag benutzen. Das willst du aber eventuell auch nicht? Also einfach
ViewBag.Schraube = ..
ViewBag.SeoModel = ..
setzen und in der View wieder ausgeben.
Gruß
Maik
--
Maik Hanns
MCT, MCPD, MCSD
- Als Antwort markiert AlexanderRi Montag, 9. Juni 2014 10:30
-
Hallo Alexander,
ein Kompositum ist keine Notlösung, sondern eines der Grundmuster, um zusammengesetzte Elemente zu erstellen.
Eher wäre anderes, wie das Verpacken in untypisierte Auflistungen ls Hilfslösung zu betrachten.
Gruß Elmar