这可能是一个愚蠢的问题,但我是MVC的新手(我已经使用了很多Webforms)并且正在观看一个教程视频,该视频强调模型应该如何完成应用程序中的所有繁重任务以及模型如何更多而不只是指定一种数据。
我的问题是,如果我正在构建一个普通的(意思是......典型的)网站,那么我们只说一个个人网站,它与用户没有太多的互动,或者它有一个联系页面,它发送一个电子邮件或什么,但没有任何涉及数据库或真正的数据/计算,模型真正扮演什么角色?
非常感谢你的想法!
答案 0 :(得分: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应用程序中最大,最重要的层。