ASP.NET MVC3入门教程之参数(数据)传递
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=98&extra=page%3D1
public class HomeController : Controller
{
//
// GET: /Home/ public ActionResult Index()
{
return View();
}
public ActionResult FirstMethod()
{
return View();
}
public ActionResult LoginPage()
{
return View();
} [HttpPost]
public ActionResult LoginForPost(string name, string password)
{
//name = Request.Form["name"];
//password = Request.Form["password"];
ViewData["name"] = name;
ViewData["password"] = password;
return View();
}
public ActionResult LoginForGet(string name, string password)
{
ViewBag.name = name;
ViewBag.password = password;
return View();
}
}
LoginPage页面
@{
ViewBag.Title = "LoginPage";
} <h2>用户登录</h2>
<h3>Post方法举例</h3>
<form action="/Home/LoginForPost" method="post">
<input type="text" name="name" />
<input type="password" name="password" />
<input type="submit" value="登录" />
</form>
<h3>Get方法举例</h3>
<form action="/Home/LoginForGet" method="get">
<input type="text" name="name" />
<input type="password" name="password" />
<input type="submit" value="登录" />
</form>
LoginForPost页面代码
@{
ViewBag.Title = "LoginForPost";
String name = ViewData["name"] as String;
String password = ViewData["password"] as String;
} <h2>你输入的name为@(name) password为@(password)</h2>
LoginForGet页面代码
@{
ViewBag.Title = "LoginForGet";
} <h2><h2>你输入的name为@(ViewBag.name) password为@(ViewBag.password)</h2></h2>
运行程序,输入http://localhost:6187/Home/LoginPage.所得页面如图所示:
我们先测试Post方法。输入Nice 和123456。点击登录:
上述Post方法的测试中,我们在html的表单中输入数据,然后传入控制器Home中的LoginForPost方法,观察LoginForPost使用了[HttpPost]属性进行了标记,该属性表示该方法只有POST请求才能访问,传递过来的参数直接作为了方法的参数,参数名称必须和表单中的input元素的name属性对应。当然 你也可以通过下面的代码直接从请求中获取传递的参数。
name = Request.Form["name"];
password = Request.Form["password"];
在从LoginForPost方法中传递到html页面中。在LoginForPost方法中获取到相关的参数后,有通过ViewData对象传递给页面。在页面我们需要进行强制转换。
String name = ViewData["name"] as String;
String password = ViewData["password"] as String;
很简单吧?再看Get方法,Get方法其实和Post方法类似。只是在LoginForGet方法中获取参数后传到到页面我们采用了ViewBag。ViewBag是dynamic类型对象,使用起来更加方便而已。下面在比较一下ViewData和ViewBag的优劣点。
ViewData
|
ViewBag
|
它是Key/Value字典集合
|
它是dynamic类型对像
|
从Asp.net MVC 1 就有了
|
ASP.NET MVC3 才有
|
基于Asp.net 3.5 framework
|
基于Asp.net 4.0与.net framework
|
ViewData比ViewBag快
|
ViewBag比ViewData慢
|
在ViewPage中查询数据时需要转换合适的类型
|
在ViewPage中查询数据时不需要类型转换
|
有一些类型转换代码
|
可读性更好
|
显然,ViewBag不需要进行类型转换,这样大大减少了我们编写代码是出现的bug。
下一篇将介绍,js主要为jquery与ASP.NET MVC3 方法的交互。
ASP.NET MVC3入门教程之参数(数据)传递的更多相关文章
- ASP.NET MVC3入门教程之第一个WEB应用程序
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=91&extra=page%3D1 上一节,我们已经搭建好了AS ...
- ASP.NET MVC3入门教程之环境搭建
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=90&extra=page%3D1 什么是ASP.NET MVC ...
- CentOS开发ASP.NET Core入门教程
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9891346.html 因为之前一直没怎么玩过CentOS,大多数时间都是使用Win10进行开发,然后程序 ...
- ASP.NET CORE 入门教程(附源码)
ASP.NET CORE 入门教程 第一课 基本概念 基本概念 Asp.Net Core Mvc是.NET Core平台下的一种Web应用开发框架 符合Web应用特点 .NET Core跨平台解决方案 ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- ASP.NET MVC3 系列教程 - 目录
ASP.NET MVC3 系列教程 - 目录 I:ASP.NET MVC3 新增的功能 ASP.NET MVC3 系列教程 - Razor视图引擎基础语法ASP.NET MVC3 系列教程 - V ...
- ASP.NET Core 入门教程 10、ASP.NET Core 日志记录(NLog)入门
一.前言 1.本教程主要内容 ASP.NET Core + 内置日志组件记录控制台日志 ASP.NET Core + NLog 按天记录本地日志 ASP.NET Core + NLog 将日志按自定义 ...
- ASP.NET MVC3 入门指南之数据验证[源码RAR下载]
http://www.cnblogs.com/BingoLee/archive/2011/12/23/2298822.html 前言: 无论你编写什么样的网页程序,都需要对用户的数据进行验证,以确数据 ...
- ASP.NET MVC3 系列教程 – 新的Layout布局系统
原文地址:http://www.cnblogs.com/highend/archive/2011/04/18/asp_net_mvc3_layout.html I:回忆MVC2当中MasterPage ...
随机推荐
- 用struts2获取session、request、parmeter的方法
package com.hanqi.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; public ...
- Sql Server 添加外部程序集基本操作
简介:有时候Sql Server的内置函数没有那么好用的时候,可以引用一下外部程序集,下面献下丑,做下添加外部程序集操作 1.准备程序,编译出一个MyCLR的DLL. public class CLR ...
- JAVA-android 更改APP名称与图标
首先要在你的资源文件放入你想换的图标图片拖到drawable-XX文件夹下,然后你打开AndroidManifest.xml这个配置清单文件找到application标签里的这句android:ico ...
- 完整卸载 kubuntu-desktop from Ubuntu 14.04 LTS
系统 ubuntu 14.04 LTS 64Bit 目的:卸载kubuntu-desktop 方法一: sudo apt-get remove libkde3support4 k3b-data ntr ...
- Django初体验(一):自定义表单提交
注:本人使用的Django1.8.3版本进行测试 除了使用Django内置表单,有时往往我们需要自定义表单.对于自定义表单Post方式提交往往会带来由CSRF(跨站请求伪造)产生的错误"CS ...
- 百度CDN 网站SSL 配置
百度CDN SSL配置步骤 一般从SSL提供商购买到的证书是CRT二进制格式的. 1. 将 CRT 导入到IIS中, 然后从IIS中导出为PFX格式 2. 下载openssl,执行下面命令 提取用户证 ...
- Ubuntu 14.04 下 Chromium 出现 未安装Adobe Flash Player 问题解决
Ubuntu 14.04 中,其他浏览器在安装Adobe Flash插件后可以播放视频及音乐,但是Chromium浏览器则会提示缺少Adobe Flash 插件. 原因:之前Chromium使用Net ...
- webform:分页组合查询
一个简单的分页组合查询页面 /// <summary> /// 查询方法 /// </summary> /// <param name="tsql"& ...
- poj1573 Robot Motion
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12507 Accepted: 6070 Des ...
- Fragment的startActivityForResult详细解决方案
由于要用到Fragment中startActivityForResult,所以一开始就直接用activity.startActivityForResult(intent, 0);发现这样用首先会跳转到 ...