2016-04-03 9 views
1

Dies könnte eine dumme Frage sein, aber ich bin neu bei MVC (ich habe Webforms viel verwendet) und beobachtete ein Tutorial-Video, das betonte, wie das Modell alle schweren tun sollte Anheben in einer Anwendung und wie das Modell ist weit mehr als nur eine Art von Daten angeben.mvc verwenden Sie Modell für Websites mit nur statischen Seiten

Meine Frage ist, wenn ich eine normale (dh ... typische) Website erstelle, sagen wir nur eine persönliche Website, die nicht viel Benutzerinteraktion damit hat oder vielleicht eine Kontaktseite hat, wo sie sendet eine E-Mail oder etwas, aber nichts mit einer Datenbank oder wirklich viel Daten/Berechnung, welche Rolle spielen Modelle wirklich?

vielen dank für ihre gedanken!

+0

Build/Verwenden Sie X, wenn Sie unbedingt X benötigen! – Shyju

Antwort

2

Der Job des Modells besteht darin, die Problemdomäne darzustellen, den Status beizubehalten und Methoden für den Zugriff und die Änderung des Status der Anwendung bereitzustellen.

Zum Beispiel in Ihre Website, wenn Sie ein Kontaktformular haben wie Sie gesagt haben über dem MVC-Muster

dieses

Modell würde

namespace WebApplication1.Models 
{ 
    public class Contact { 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Email { get; set; } 
     public string Comment { get; set; } 
    } 
} 

Ansicht (gewohnt sind alle Felder)

@using (Html.BeginForm("Contact", "Home", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @id = "contact-form", role = "form" })) 
{ 
    @Html.ValidationSummary() 
    <fieldset> 
     <div class="form-div-1"> 
      <label class="name"> 
       @Html.TextBoxFor(m => m.FirstName, new { @placeholder = "First Name *", @type = "text" }) 
      </label> 
     </div> 
     <div class="form-div-2"> 
      <label class="email"> 
       @Html.TextBoxFor(m => m.Email, new { @placeholder = "Email Address *", @type = "email" }) 
      </label> 
     </div> 
     <div class="button-wrapper"> 
      <input type="submit" value="Send" name="submit" class="button"> 
     </div> 
    </fieldset> 
} 

Steuerung

[HttpPost] 
    public ActionResult Contact(MailModels e) 
    { 
     if (ModelState.IsValid) 
     { 

      StringBuilder message = new StringBuilder(); 
      MailAddress from = new MailAddress(e.Email.ToString()); 
      message.Append("First Name: " + e.FirstName + "\n"); 
      message.Append("Email: " + e.Email + "\n"); 
      // send email logic below 
     } 
    } 

Jetzt können Sie mit diesem grundlegenden Beispiel sehen, wie wichtig und gut es ist, dass sich diese Logik aufteilt.

Modelle bieten einfach eine schöne Abstraktion für Ihre Daten. Statt zu denken in "Wie schreibe ich diesen inneren Join, um alle Felder zu bekommen, die ich brauche", ermöglichen Modelle Ihnen, zu denken, "wie sind die Objekte meiner Anwendung miteinander verwandt, wie interagieren sie und wie kann ich? bekomme die Daten, die ich von ihnen brauche ".

Der zentrale Bestandteil des MVC, das Modells, fängt die Verhalten der Anwendung in Bezug auf seinen Problembereich, unabhängig von den Benutzern Schnittstelle. Das Modell direkt verwaltet die Daten der Anwendung, Logik und Regeln

Also ja im Grunde das Modell die größte ist, wichtigste Schicht in den meist MVC-Anwendungen.

+0

Was ist mit Seiten, die nur statisch sind wie über Bilder oder etwas. Ich bin richtig in der Annahme, dass sie keine Modelle brauchen, oder? oder fehle ich etwas? Wie die Empfehlung zu meiner Frage sagt, wenn es kein Bedürfnis für ein Modell gibt, sollte ich keins verwenden, oder? – blubberbo

+0

Ja, wenn Sie keine Daten haben, um zu manipulieren oder irgendetwas, müssen Sie nicht nur das Modell verwenden, aber dann sollten Sie vielleicht Webforms neu denken und verwenden, wenn das der Fall ist. –

+0

genial, vielen Dank. Ihre Antwort oben ist auch perfekt! – blubberbo

Verwandte Themen