用户注册页面,带有定义的用户MODEL(MVC)
我以前曾使用过.Net webforms,现在正在开发一个MVC项目。
我正在创建用户注册页面。 我不知道它的MODEL应该是什么样子。
查看数据库图
用户注册页面:
姓
邮箱地址
密码
选择你的城市
我想我必须在这个任务中做到这一点:
第1步 :
使用数据库中的数据填充城市dropdownList(选择您的城市)
第2步 :
在UserEmail表中插入用户的电子邮件地址, UserEmail设置为0或1
第3步 :
将用户注册数据和EmailID(从UserEmails表中获取),CityID保存到Users表中
我应该制作一个大模型,像这样:
Public Class Registration Model
{
Get, set:
all USEREMAIL plugs ties
all Users plugs ties
all Cities plugs ties
}
如何在MVC中开始这个任务?
(我知道如何在webforms中进行开发,但MVC模型让我感到困惑)
您正走在正确的轨道上。您正尝试创建一个让用户完成注册表单的视图,该视图需要使用用户模型,并且以相同类型显示一个下拉列表中的城市列表,这些列表来自不同的城市表中的数据库,但与用户有关。
在MVC中有一个叫viewmodel的概念,它只是一个将一个或多个模型组合在一起的简单类。
在下面,我创建了一个名为SiteUser的模型,然后是另一个名为SiteUserViewModel模型,它从用户继承,并为我们提供了所有用户属性PLUS一个可用于填充城市的附加属性。因此,当我们显示页面时,我们将使用SiteUserViewModel当我们发布到控制器以将用户保存在数据库中时,我们将使用SiteUser :
楷模:
namespace MVCTutorial.Models
{
public class SiteUser
{
[Display(Name="First Name")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
[DataType(DataType.EmailAddress)]
public string EmailAddress { get; set; }
[Display(Name = "Subscribe To Newsletter?")]
public bool SubscribeToNewsletter { get; set; }
[DataType(DataType.Password)]
public string Password { get; set; }
[Display(Name="City")]
public int CityId { get; set; }
}
public class SiteUserViewModel : SiteUser
{
public List<SelectListItem> Cities { get; set; }
}
}
控制器:
public class SiteUserController : Controller
{
[HttpGet]
public ActionResult Index()
{
var model = new SiteUserViewModel();
//Replace this with logic that reads cities from the database
var city1 = new SelectListItem { Text = "Johannesburg", Value = "1" };
var city2 = new SelectListItem { Text = "Cape Town", Value = "2" };
model.Cities = new List<SelectListItem> { city1, city2 };
return View(model);
}
[HttpPost]
public ActionResult CreateUser(SiteUser user)
{
System.Diagnostics.Debugger.Break();
//Write the code to add user to the database
return View();
}
}
视图:
@model MVCTutorial.Models.SiteUserViewModel
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Create User</title>
</head>
<body>
@using (Html.BeginForm("CreateUser", "SiteUser"))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Site User</legend>
<div class="editor-label">
@Html.LabelFor(model => model.FirstName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.LastName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.EmailAddress)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.EmailAddress)
@Html.ValidationMessageFor(model => model.EmailAddress)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.SubscribeToNewsletter)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.SubscribeToNewsletter)
@Html.ValidationMessageFor(model => model.SubscribeToNewsletter)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Password)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.CityId)
</div>
<div class="editor-field">
@Html.DropDownList("CityId", Model.Cities, "Please select one")
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
</body>
</html>
结果: 

上一篇: User registration page, with a defined user MODEL (MVC )
