none
Wie zwei verschiedenen Objekte vom Controller an View übergeben (MVC4)? RRS feed

  • 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
    Mittwoch, 4. Juni 2014 13:18

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

    http://blog.maikhanns.de

    • Als Antwort markiert AlexanderRi Montag, 9. Juni 2014 10:30
    Donnerstag, 5. Juni 2014 14:59

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

    http://blog.maikhanns.de

    Mittwoch, 4. Juni 2014 15:55
  • 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
    Donnerstag, 5. Juni 2014 13:09
  • 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

    http://blog.maikhanns.de

    • Als Antwort markiert AlexanderRi Montag, 9. Juni 2014 10:30
    Donnerstag, 5. Juni 2014 14:59
  • 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

    Donnerstag, 5. Juni 2014 15:32