练习:

新建一个mvc项目

要求:

有3个视图  Login Index Details

目的:
感受一下MVC与传统WebForm的差异性

WebForm的请求模型

MVC请求模型

传统WebForm与MVC区别

WebForm 实际上请求的是一个页面对象

MVC 不仅请求了一个页面对象,还向服务器请求了具体的业务处理方法

程序结构如下

一,项目模板和视图引擎介绍

项目模板

基本: 一般选择这个  它会自动将一些Jquery库导入进来

Internet应用程序:外网使用的

Intranect应用程序:内网使用

Web API:一个轻量级的WebService

知识点:

Web API:使用JSON格式传输数据

WebService:使用XML格式传输数据

视图引擎:

ASPX:在前台用<% %>形式写C#

Razor:在前台用@语法写C#

二,添加一个控制器Controller

控制器模板:

空MVC控制器:只有一个默认的Index方法

包含空的读/写操作的MVC控制器:会将增删改查的Action方法自动添加到当前控制器代码中

三,返回一个String字符串

public string PrintStr()
{
return "hello mvc4";
}

运行后:

四,添加视图Login.cshtml

前台:Login.cshtml

@model MvcApplication1.Models.User
@{
Layout = null;
}
<!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Login</title>
</head>
<body>
<div>
<h3>登录</h3>
ViewBag接收后台数据:@ViewBag.tips <br /><br />
Model接收后台数据: @Model.UName <br /><br /> <form action="/User/Login" method="post">
<input type="text" name="UName" /><br /><br />
<input type="password" name="UPwd" /><br /><br />
<input type="submit" value="登入" />
</form> </div>
</body>
</html>

后台:

        [HttpGet]
public ViewResult Login()
{
//向前台传值
ViewBag.tips = "hello, welcome to here"; Models.User model = new Models.User();
model.UName = "华子"; return View(model);
}

@{Layout = null;}

表示当前视图不使用默认的母版页

 

后台向前台传值,有两种方式

ViewBag

Return View(model)

 

强类型视图

在csdhmtl顶部指定model类型,形式如@model MvcApplication1.Models.User,就叫强类型型视图

好处:在VS中可以智能提示,可以直接写如@Model.UName

五,提交Login.cshtml后重定向

前台:

<form action="/User/Login" method="post">
<input type="submit" value="登入" />
</form>

 

后台:

       [HttpPost]
public ActionResult Login(Models.User model)
{
if (model.UName == "lvhua" && model.UPWD == "")
{
return Redirect("/User/Index");
}
Response.Write("<script>alert('用户名或密码错误');location.href='/User/Login'</script>");
return null; }

重定向

使用Return Redirect (路径) ,相当于Response.Redirect

[HttpPost]和[HttpGet]

如果控制器中有两个同名的Action方法时,应该用.net特性[HttpPost]和[HttpGet]区别

ActionResult和ViewResult

ViewResult       一般用于加载当前视图

ActionResult    一般用于重定向

后台接收前台表单数据

前台表单控件name命名与model属性名相同,后台Action方法参数中就可以用model来接收了,服务器会把表单中的数据加进model里

六,显示Index.cshtml

前台:

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<h3>Index</h3>
<div>
@for (int i = 1; i <= 10; i++)
{
<text>@i</text><span>只老虎</span>
<a href="/User/Details/@i">进入</a><br />
} </div>
</body>
</html>

如果只想显示纯文本,可用<text>标签

七,显示Details.cshtml

前台:

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Details</title>
</head>
<body>
<h3>Details</h3>
<div>
<span>第</span>@ViewBag.id<span>只老虎</span>
</div>
</body>
</html>

后台:

       public ViewResult Details(int id)
{
ViewBag.id = id;
return View();
}

后台如何获取跳转的id?

前一个页面,遵守RouteConfig的url格式

<a href="/User/Details/@i">进入</a><br />

后台Action方法中参数id即可获取(参数id名称须与RouteConfig配置的id同名)

Asp.net MVC4之 一个简单的小例子的更多相关文章

  1. 一个简单的小例子让你明白c#中的委托-终于懂了!

    模拟主持人发布一个问题,由多个嘉宾来回答这个问题. 分析:从需求中抽出Host (主持人) 类和Guests (嘉宾) 类. 作为问题的发布者,Host不知道问题如何解答.因此它只能发布这个事件,将事 ...

  2. WebSocket在ASP.NET MVC4中的简单实现

    WebSocket在ASP.NET MVC4中的简单实现 2013-12-21 20:48 by 小白哥哥, 810 阅读, 3 评论, 收藏, 编辑 WebSocket 规范的目标是在浏览器中实现和 ...

  3. 记一次ASP.NET MVC4 升级到MVC5的小问题解决

    原文:记一次ASP.NET MVC4 升级到MVC5的小问题解决 .NET 4.0 MVC4版本,升级到.NET 4.6.1 MVC5: 1.使用nuget更新所有 与mvc相关的类库; 2.更改~/ ...

  4. asp.net mvc4 过滤器的简单应用:登录验证

    直接上代码,不要说话. ASP.NET MVC4过滤器的简单应用:验证登录 [AcceptVerbs(HttpVerbs.Post)] public ActionResult login(FormCo ...

  5. 输出多行字符的一个简单JAVA小程序

    public class JAVA { public static void main(String[] args) { System.out.println("-------------- ...

  6. python -----一个简单的小程序(监控电脑内存,cpu,硬盘)

    一个简单的小程序 用函数实现!~~ 实现: cpu 使用率大于百分之50 时  ,  C 盘容量不足5 G 时, 内存 低于2G 时. 出现以上其中一种情况,发送自动报警邮件! 主要运用 到了两个 模 ...

  7. 3.2 Lucene实战:一个简单的小程序

    在讲解Lucene索引和检索的原理之前,我们先来实战Lucene:一个简单的小程序! 一.索引小程序 首先,new一个java project,名字叫做LuceneIndex. 然后,在project ...

  8. 给 asp.net core 写一个简单的健康检查

    给 asp.net core 写一个简单的健康检查 Intro 健康检查可以帮助我们知道应用的当前状态是不是处于良好状态,现在无论是 docker 还是 k8s 还是现在大多数的服务注册发现大多都提供 ...

  9. 一个有趣的小例子,带你入门协程模块-asyncio

    一个有趣的小例子,带你入门协程模块-asyncio 上篇文章写了关于yield from的用法,简单的了解异步模式,[https://www.cnblogs.com/c-x-a/p/10106031. ...

随机推荐

  1. 2013 吉林通化邀请赛 Play Game 记忆化搜索

    dp[ba][ta][bb][tb]表示a堆牌从下面拿了ba张,从上面拿了ta张.b堆牌从下面拿了bb张,从上面拿了tb张.当前玩家能得到的最大的分数. 扩展方式有4种,ba+1,ta+1,bb+1, ...

  2. UVA1450-Airport

    题目链接 题意:有一个飞机场.有两条待飞跑到w和e.一条起飞跑道.每一时刻仅仅能起飞一架飞机,然后有w[i]和e[i]架飞机进入w和e跑道.飞机编号从0開始,问说怎样安排起飞能够使得飞机编号的最大值最 ...

  3. zoj 2972 - Hurdles of 110m

    题目:110米栏,运动员能够用三种状态跑,1状态耗体力且跑得快,2状态不消耗体力,3状态恢复体力且跑得慢. 体力上限是M,且初始满体力,如今想知到最小的时间跑全然程. 分析:dp,全然背包.题目是一个 ...

  4. hdu1824(two-sat)

    传送门:Let's go home 题意:有n个队伍要回家,但是每队必须留下一人,而且m个限制,a留下,b必须回家,问能否在限制条件下每队留下一人. 分析:将每个队的队长和两个队员当成i和i':然后对 ...

  5. 在html中写python代码的语法和特点-----基于webpy的httpserver

    在html文件里写python语法的内容,的注意事项: 1:python程序中的变量通过以下方法传入到html: 1:通过全局变量 :全局变量是不须要用$def with语法实现传递的,仅仅要定义了 ...

  6. Java程序猿学习当中各个阶段的建议

    回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议   引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的 ...

  7. I2C分析三

    1 引言 IIC (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备.它是同步通信的一种特殊形式,具有接口线少.控制方 ...

  8. [poj 1127]Jack Straws[线段相交][并查集]

    题意: 给出一系列线段,判断某两个线段是否连通. 思路: 根据线段相交情况建立并查集, 在同一并查集中则连通. (第一反应是强连通分量...实际上只要判断共存即可, 具体的方向啊是没有关系的..) 并 ...

  9. SQLServer 复制中移除和加入公布而不初始化全部项目

    -- 若提前"禁止架构更改".新增的列不会自己主动加入大公布.此时应使用 sp_articlecolumn 加入列 EXEC sp_changepublication @publi ...

  10. hdu 1849 (尼姆博弈)

    http://acm.hdu.edu.cn/showproblem.php? pid=1849 简单的尼姆博弈: 代码例如以下: #include <iostream> #include ...