1//一个简单的注册类(未做任何处理,后续加上其他内容)
public class UserInfo { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual int Age { get; set; } }
2.MVC和aspx最大的区别,MVC返回的是一个方法,地址栏里其实是方法名,而不再是页面
#region 用户列表 public ActionResult Index() { List<UserInfo> user = new List<UserInfo>(); for (int i = 0; i < 10; i++) { user.Add(new UserInfo{Id=i,Name="s"+i}); } //ViewBag.dt = user; return View(user); } #endregion
一个控制器对应一个View页面,点击控制器的方法可返回到视图,也可直接添加视图
这是基与MVC的webform还有基与MVC的mvc,最大的区别是调用方法,一个是用@一个是<%:xxx%>
//dynanic 关键词,内置索引,比var更好,因为传回的是一个实体,可以用强制类转换
<% foreach (dynamic t in Model)
{%> <%:t.Name%> <%:t.Id%><br /> <%} %>
3.简单的用户注册(未做判断和使用html铺助方法,后续学习跟上),form提交给的是控制器里的方法,类似ashx
<form method="post" action="/User/ProcessAdd"> <table> <tr> <td>用户名</td> <td><input type="text" name="UserName" /></td> </tr> <tr> <td>年龄</td> <td><input type="text" name="UserAge" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="注册新用户"/></td> </tr> </table> </form>
控制器对应的方法接收传回来的值
public ActionResult ProcessAdd(FormCollection collection) { //FormCollection 表单传过来的集合等同于Request["UserName"] string userName = Request["UserName"]; int age; bool b = int.TryParse(collection["Age"]??"0", out age); //return Content("Ok"); return RedirectToAction("Index"); }
4.展示用户信息
#region 显示用户详情 public ActionResult show() { UserInfo user = new UserInfo(); user.Id = 1; user.Name = "小李"; user.Age = 21; //ViewBag.userinfo = user; ViewData.Model = user;//传值model给viewdata.model 强制类型视图 return View(); } #endregion
//前台页面。因为传过来的是一个model,model是一个强制类型视图
id:<%:Model.Id %> name:<%:Model.Name %> <%:Html.TextBoxFor(u=>u.Name)%>//For用的是lamda表达式,意思是定义一个u(表示他是lamda表达式)goes to 他的属性(-_-百度脑补中)
<%:Html.TextBox("Name") %>//对应Name的值会自动去匹配