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的值会自动去匹配