Asp.net MVC4之 一个简单的小例子
练习:
新建一个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之 一个简单的小例子的更多相关文章
- 一个简单的小例子让你明白c#中的委托-终于懂了!
模拟主持人发布一个问题,由多个嘉宾来回答这个问题. 分析:从需求中抽出Host (主持人) 类和Guests (嘉宾) 类. 作为问题的发布者,Host不知道问题如何解答.因此它只能发布这个事件,将事 ...
- WebSocket在ASP.NET MVC4中的简单实现
WebSocket在ASP.NET MVC4中的简单实现 2013-12-21 20:48 by 小白哥哥, 810 阅读, 3 评论, 收藏, 编辑 WebSocket 规范的目标是在浏览器中实现和 ...
- 记一次ASP.NET MVC4 升级到MVC5的小问题解决
原文:记一次ASP.NET MVC4 升级到MVC5的小问题解决 .NET 4.0 MVC4版本,升级到.NET 4.6.1 MVC5: 1.使用nuget更新所有 与mvc相关的类库; 2.更改~/ ...
- asp.net mvc4 过滤器的简单应用:登录验证
直接上代码,不要说话. ASP.NET MVC4过滤器的简单应用:验证登录 [AcceptVerbs(HttpVerbs.Post)] public ActionResult login(FormCo ...
- 输出多行字符的一个简单JAVA小程序
public class JAVA { public static void main(String[] args) { System.out.println("-------------- ...
- python -----一个简单的小程序(监控电脑内存,cpu,硬盘)
一个简单的小程序 用函数实现!~~ 实现: cpu 使用率大于百分之50 时 , C 盘容量不足5 G 时, 内存 低于2G 时. 出现以上其中一种情况,发送自动报警邮件! 主要运用 到了两个 模 ...
- 3.2 Lucene实战:一个简单的小程序
在讲解Lucene索引和检索的原理之前,我们先来实战Lucene:一个简单的小程序! 一.索引小程序 首先,new一个java project,名字叫做LuceneIndex. 然后,在project ...
- 给 asp.net core 写一个简单的健康检查
给 asp.net core 写一个简单的健康检查 Intro 健康检查可以帮助我们知道应用的当前状态是不是处于良好状态,现在无论是 docker 还是 k8s 还是现在大多数的服务注册发现大多都提供 ...
- 一个有趣的小例子,带你入门协程模块-asyncio
一个有趣的小例子,带你入门协程模块-asyncio 上篇文章写了关于yield from的用法,简单的了解异步模式,[https://www.cnblogs.com/c-x-a/p/10106031. ...
随机推荐
- C语言常用的宏
01: 防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 02: 重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类 ...
- 如何理解java回电话
同android中间Button的setOnClickListener这个回调案例: Button button = (Button)this.findViewById(R.id.button); b ...
- BI中事实表和维度表的定义
一个典型的样例是,把逻辑业务比作一个立方体,产品维.时间维.地点维分别作为不同的坐标轴,而坐标轴的交点就是一个详细的事实.也就是说事实表是多个维度表的一个交点.而维度表是分析事实的一个窗体. 首先介绍 ...
- 移动app接口编程技术-学习实现之PHP进阶 数组
数组创建,初始化 <?php //请创建一个数组变量arr,并尝试创建一个索引数组 /** * 不带初始值的创建.创建后赋予值 * 注:下标一定是整数 */ $arr = array(); $a ...
- cocostudio——js 3 final控件事件
近期试用了下cocos ide,然后引擎用的cocos2dx js 3 final,须要build runtime一下,以下是cocos studio相关的一些事件: 加入事件侦听: // butto ...
- OSG+VS2010+win7环境搭建
Win7下 osg+vs2010环境搭建 一.相关准备 a) Osg源代码 当前最新版:OpenSceneGraph的3.0.0.zip 下载链接: http://www.openscenegraph ...
- 联系我们_鲲鹏Web数据抓取 - 专业Web数据采集服务提供者
联系我们_鲲鹏Web数据抓取 - 专业Web数据采集服务提供者 首页 > 联系我们 我们的联系方式如下: 029 - 82542052(陕西 西安) 13389148466 或 13571845 ...
- java的url
中国的争论导致了扭曲
话不多说,,直接粘代码 发件人 UrlParaCode.jsp <%@ page language="java" import="java.util.*" ...
- 我的Android学习之旅(转)
去年大概在七月份的时候误打误撞接触了一阵子Android,之后由于工作时间比较忙,无暇顾及,九月份的时候自己空闲的时间比较多,公司相对来说加班情况没以前严重.开启了个人的Android学习之旅,初衷是 ...
- Linux下玩转Dota2
Dota2是一款颇为风靡的即时战略类游戏,去年官方就支持Mac和Linux了,对于习惯Mac和linux平台的孩子们来说,简直感动的泪流满面. 当然,也简直是linux程序猿的福音啊啊! 与Win8. ...