Announcement

Collapse
No announcement yet.

C# MVC 3 View Elemente Hinzufügen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • C# MVC 3 View Elemente Hinzufügen

    Hallo Alle zusammen, wie der Titel schon sagt, möchte ich gerne Elemente der View hinzufügen können. Ich habe noch nie was richtiges in C# gemacht aber bin dabei es zu erlenen. Habe mir ein MVC3 Projekt erstellt und weis bereits wie man den Controller, Model und so anlegt und wie es so ungefähr funzt.
    Möchte gerne wissen wie ich jetzt einer View, aus dem Controller heraus einen element hinzufügen kann. Kann man da jemand auf die Sprünge helfen???

    So sieht der Code also aus, nichts besonderes:

    das ist die View index.cshtml
    Code:
    @{
    	Page.Title = "Home Page";
    }
    
    <h2>@ViewBag.Message</h2>
    <p id="test">
        TODO: Write you some codez, bro.
    </p>

    Hier der Controller:

    Code:
     
    public class HomeController : Controller
        {
            public ActionResult Index()
            {
                ViewBag.Message = "MotherEffin HTML5 Boilerplate MVC!";
                return View();
            }
    }
    Wie kann ich jetzt der id="test" bzw. dem Element mit der ID einen DIV oder irgendwas anderes hinzufügen. Per javascript geht es ja ganz easy, aber hier habe ich nichts gefunden
    Zuletzt editiert von i7spiel; 24.10.2011, 13:36.

  • #2
    Du schreibst einfach

    [highlight=html]
    <p id="test">
    @ViewBag.Message
    </p>
    [/highlight]

    Dann sollte in dem Paragraph Deine Message gerendert werden.

    Eigentlich sollte jede View auch ein entsprechendes ViewModel haben. In dem ViewModel hast Du für alles was dynamisch vom Server gerendert wird eine Property. Etwa so:

    [highlight=c#]
    public class HomeViewModel
    {
    public String WelcomeMessage { get; set; }
    }
    [/highlight]

    Dazu änderst Du dann Deinen HomeController so ab:

    [highlight=c#]
    public class HomeController : Controller
    {
    public ActionResult Index()
    {
    ViewBag.Message = "MotherEffin HTML5 Boilerplate MVC!";

    var viewModel = new HomeViewModel();

    // Das hier könnte z.B. auch aus einer DB geladen werden
    viewModel.WelcomeMessage = "Herzlich willkommen auf meiner Homepage!";

    return View(viewModel);
    }
    }[/highlight]

    Dazu musst Du nun einen View erstellen der das ViewModel kennt. Am einfachsten geht das über den Assistenten. Du gehst auf "Add View...", dann "create a strongly-typed view". Dort wählst Du die Klasse des ViewModels aus (es kann sein dass Du erst einmal kompilieren musst bevor Dir das ViewModel dort zur Verfügung steht).

    So jetzt hast Du ein View zu Deinem ViewModel. Im View kannst Du jetzt so auf die Eigenschaften des ViewModels zugreifen:

    [highlight=html]
    <p id="test">
    @Model.WelcomeMessage
    </p>
    [/highlight]

    Das ist die einfachste Variante Für alles andere einfach im Internet suchen oder besser Dir ein Buch zulegen. Das hier kann ich z.B. empfehlen: http://www.amazon.de/Pro-ASP-Net-MVC...9461506&sr=8-2

    Das habe ich gelesen.
    Zuletzt editiert von fanderlf; 24.10.2011, 15:05.

    Comment


    • #3
      Und wie Adde Ich ein Element in der VIEW aus dem CONTROLLER HERAUS? Das was du gemacht hast weis ich auch, so kann ich ein text in einem Element erstellen
      Zuletzt editiert von i7spiel; 24.10.2011, 15:20.

      Comment


      • #4
        Ich möchte jedoch ein Element in einam anderen Element hinzufügen.

        Ein Element in einer DOM Struktur ist: z.B: <div>, <a>, <p>..... etc...

        Was du machst ist, eine Eigenschaft difinieren und der eigenschaft Text zuweisen. Den text dann innerhalb eines Elements auszugeben.

        Comment


        • #5
          Du kommst vom Controller nicht auf die View. Im ViewModel ist alles zu definieren was in der View passieren soll. Auch in der View kann Logik stehen. Ich muss jetzt leider grad heim fahren, sonst würd ich noch mehr dazu schreiben, aber dann ist mein Zug weg. Ich schau von daheim nochmal rein

          Comment


          • #6
            So ich hab jetzt mal ein kleines Beispielprojekt gebaut. Die Daten werden aus einem Repository (das könnte in Deinem Fall auch eine DB sein) geladen, dann werden die Daten in ein ViewModel gepackt. Die View rendert diese Customers dann. Hat der Customer eine Adresse wird diese angezeigt. Wenn nicht eine kleine Nachricht. So kannst du praktisch das gerenderte HTML beeinflussen. Ein MVC Framework funktioniert nicht wie Windows oder Web Forms wo man vom Code Behind Zugriff auf die Form Elemente hat.

            Idealerweise baut man hier noch Dependency Injection für das ICustomerRepository ein. Der Einfachheit halber hab ich das aber weggelassen. Ausserdem hätte das sonst nicht mehr ins Zip gepasst, wenn ich da noch nen DI Container hätte mit hinein packen müssen.

            Wenn die Anwendung komplexer wird (z.B. ist die DB Abfrage komplizierter oder es müssen noch Verarbeitungsschritte vor der DB Abfrage gemacht werden), dann könnte man noch einen Service Layer klemmen, der komplexere Verarbeitungsschritte vor nimmt. Da es sich hier aber um einen recht simplen Controller handelt und zudem der Controller auch testbar ist, sehe ich an dieser Stelle kein Problem
            Attached Files
            Zuletzt editiert von fanderlf; 24.10.2011, 20:48.

            Comment


            • #7
              Hay danke. Ich werde es mir gleich reinziehen und melde mich bestimmt.
              DANKE für die MÜHE erstmal

              Comment


              • #8
                Ich hoffe Du kannst es aufmachen. Wurde mit Visual Studio 2010 Ultimate erstellt.

                Comment

                Working...
                X