用户注册页面,带有定义的用户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>
    

    结果: 在MVC中使用视图模型

    在MVC中发布模型

    链接地址: http://www.djcxy.com/p/56601.html

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

    下一篇: Specflow with MVC Model Validation Issue