I just started learning MVC, and it was a bit difficult to switch from Webform. Many things have already changed to another form, and I am constantly adapting to this. Let’s explain a simple registration page. Let’s get familiar with the commonly used operations in MVC.
The User class in Model is as follows
<span style="font-family:SimSun;font-size:18px;">public class User { //用号登录姓名 public string LoginName { get; set; } //用户密码 public string Password { get; set; } //用户的电子邮件 public string Email { get; set; } //用户的手机号码 public string Phone { get; set; } }</span>
The biggest benefit of MVC is separation of concerns, which means we are developing In the process, you don’t need to worry about what the page is. You can develop business logic first. The following are the operations in RegisterController
<span style="font-family:SimSun;font-size:18px;">public class registerController : Controller { //注册完的信息显示 public ActionResult Create(FormCollection form) { User user = new User() { //两种获取方法,一种通过request,一种通过formcollection类 LoginName=form["name"], // LoginName = Request.Form["loginName"], Password = Request.Form["password"], Phone = Request.Form["phone"], Email = Request.Form["email"] }; //通过viewdata向界面传递值 ViewData["UserInfo"] = user; return View(); } //注册的方法 public ActionResult Reg() { //字典类型的键值对 IDictionary<int, string> star = new Dictionary<int, string>(); //添加值 star.Add(1, "白羊座"); star.Add(2, "金牛座"); star.Add(3, "双子座"); star.Add(4, "巨蟹座"); star.Add(5, "狮子座"); star.Add(6, "处女座"); star.Add(7, "天秤座"); star.Add(8, "天蝎座"); star.Add(9, "射手座"); star.Add(10, "摩羯座"); star.Add(11, "水瓶座"); star.Add(12, "双鱼座"); //为列表赋值 SelectList starList = new SelectList(star, "key", "value"); //向界面传递值 ViewData["star"] = starList; return View(); } }</span>
With the above business logic, we can implement it The page is operated.
Registration page
<span style="font-family:SimSun;font-size:18px;"><%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %><!DOCTYPE html><html><head runat="server"> <meta name="viewport" content="width=device-width" /> <title>Reg</title></head><body> <div id="register"><% using (Html.BeginForm("Create", "Register", FormMethod.Post)) { %> <table border="0" width="500"> <thead><tr><td colspan="2"> <h3>用户注册</h3> </td></tr></thead><tbody> <tr><td class="td_left">登录名:</td> <td><%=Html.TextBox("loginName") %></td> </tr><tr><td class="td_left">密码:</td> <td><%=Html.Password("password") %></td> </tr><tr><td class="td_left">确认密码:</td> <td><%=Html.Password("password2") %></td> </tr><tr><td class="td_left">星座:</td> <td><%=Html.DropDownList("star") %></td> </tr><tr><td class="td_left">性别:</td> <td><%=Html.RadioButton("sex", true, new { style = "border:0; width:30px;" })%>男 <%=Html.RadioButton("sex", false, new { style = "border:0; width:30px;" })%>女</td> </tr><tr><td class="td_left">已婚:</td> <td><%=Html.CheckBox("married", false, new { style = "border:0; width:30px;" })%></td> </tr><tr><td class="td_left">安全邮箱:</td> <td><%=Html.TextBox("email") %>输入邮箱</td> </tr><tr><td class="td_left">联系电话:</td> <td><%=Html.TextBox("phone") %>输入联系电话</td> </tr><tr> <td colspan="2" align="center"><br /><button type="submit"> 提交 </button><br /><br /></td> </tr> </tbody> </table><%} %></div></body></html></span>
The detailed information page is as follows
<span style="font-family:SimSun;font-size:18px;"><%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %><!DOCTYPE html><html><head runat="server"> <meta name="viewport" content="width=device-width" /> <title>Create</title></head><body> <div id="register"> <h2>用户注册</h2> <% loginMvc.Models.User user = ViewData["UserInfo"] as loginMvc.Models.User; %> 你刚才提交的信息如下:<br /> 登 录 名:<%= user.LoginName %><br /> 登录密码:<%= "******" %><br /> 安全邮箱:<%= user.Email %><br /> 联系电话:<%= user.Phone %><br /> <br /> <button>确定注册</button> <a href="/Register">返回重填</a> <br /><br /></div></body></html></span>
Case Analysis
Several key points are used in the above example. Let’s analyze it below.
1. Get the passed value
In the above example, we use two methods to get the passed value, namely the FormCollection class and the Request object. These two usages are the same.
2. Page jump
The BeginForm operation of the HtmlHelper class is used, such as Html.BeginForm("Create", "Register", FormMethod.Post), which represents the post method as the page. When submitting, pass it to the Create method in the Register controller. There are many parameters of this method, you can study them yourself.
3. Viewdata returns a value to the page. Viewdata is like a container that can load anything. In the above example, it is passed through viewdata. For example, in the controller ViewData["UserInfo"] = user; loads the user object into the container, and then uses login.models.user user= ViewData["UserInfo"] as loginMvc.Models.User on the page to user assignment, it should be noted that forced conversion is required here.
4. The difference between viewdata and TempData
The ViewData property is a ViewDataDictionary class that can be used to store the data type of any object, but the stored key value must be a string. ViewData has a feature, which is It will only exist in the current HTTP request, and unlike the session, the data can be carried to the next HTTP request. Like ViewData, both belong to the dictionary class, but the data in it is just a request for a web page
??