2016-04-03 88 views
1

這可能是一個愚蠢的問題,但我是新來的MVC(我已經使用了Webforms大量),並觀看教程視頻,強調如何模型應該做的所有沉重在應用程序中提升以及模型如何不僅僅是指定一種數據。mvc你使用模型的網站只有靜態網頁

我的問題是,如果我建立一個正常的(意思是......典型值)的網站,讓我們說只是一個個人網站,沒有太多的用戶交互與它或者它有它發送一個聯繫頁面一封電子郵件或其他東西,但沒有涉及數據庫或真正的數據/計算,模型真正扮演什麼角色?

非常感謝您的想法!

+0

建立/使用X當你絕對需要X! – Shyju

回答

2

該模型的工作是表示問題域,維護狀態並提供訪問和變更應用程序狀態的方法。

例如,在你的網站,如果你有一個接觸的形式像你說你上面的MVC模式將是這樣

型號

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; } 
    } 
} 

視圖(不會包括所有字段)

@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> 
} 

控制器

[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 
     } 
    } 

現在通過這個基本的例子,你可以看到這個邏輯分裂的重要性和好處。

模型只是爲您的數據提供了一個很好的抽象。相反,在思維的「我怎麼寫這個內連接來得到我所需要的所有領域」,模式使您認爲在「如何彼此相關的我的應用程序的對象,他們是如何相互作用的方面,我怎麼能從他們那裏獲得我需要的數據「。

MVC,該模型的核心組成部分,捕獲它的問題域,獨立於用戶界面 的方面應用的 行爲。該模型直接管理應用程序的數據,邏輯 和規則

所以是基本的模式是在大多數MVC應用程序的最大,最重要的一層。

+0

那些靜態的頁面或者圖片什麼的。我假設他們不需要模型是正確的,對吧?或者我錯過了什麼?像表彰我的問題說,如果沒有必要的模型,我不應該使用一個,對不對? – blubberbo

+0

是的,如果你沒有任何數據來操縱或任何你只是不需要使用模型,但那麼你也許應該重新考慮,如果多數民衆贊成的情況下使用web表單。 –

+0

真棒,非常感謝。上面的答案也是完美的! – blubberbo