asp.net.mvc 中form表单提交控制器的2种方法和控制器接收页面提交数据的4种方法
MVC中表单form是怎样提交? 控制器Controller是怎样接收的?
1、.cshtml 页面form提交
(1)普通方式的的提交
(2)特殊方式提交
2、控制器处理表单数据的四种方法
方法1:使用传统的Request请求数据
方法2:Action参数名与表单元素name值一一对应
方法3:从MVC封装的FormCollection容器中读取
方法4:使用实体作为Action参数传入,前提是提交的表单元素名称与实体属性名称一一对应
控制器源码
using MvcStudy.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcStudy.Controllers
{
public class LoginController : Controller
{
public ActionResult Index() {
return View();
}
public ActionResult Main() {
return View();
}
//1、.cshtml页面的form请求
//<form action="Login/index" method="post"></form>
//2、控制器处理表单提交方式的四种方法
////方法1:使用传统的Request请求数据
//[HttpPost]
//public ActionResult GetUserMsg()
//{
// string usercode = Request.Form["UserCode"];
// string userpwd = Request.Form["UserPwd"];
// if(usercode != "admin" || userpwd != "admin"){
// return RedirectToAction("../Home/error");
// }
// return RedirectToAction("main");
//}
////方法2:Action参数名与表单元素name值一一对应
//[HttpPost]
//public ActionResult GetUserMsg(string UserCode, string UserPwd)
//{
// string usercode = UserCode;
// string userpwd = UserPwd;
// if(usercode != "admin" || userpwd != "admin"){
// return RedirectToAction("../Home/error");
// }
// return RedirectToAction("main");
//}
////方法3:从MVC封装的FormCollection容器中读取
//[HttpPost]
//public ActionResult GetUserMsg(FormCollection form)
//{
// string usercode = form["UserCode"];
// string userpwd = form["UserPwd"];
// if (usercode != "admin" || userpwd != "admin")
// {
// return RedirectToAction("../Home/error");
// }
// return RedirectToAction("main");
//}
//方法4:使用实体作为Action参数传入,前提是提交的表单元素名称与实体属性名称一一对应
[HttpPost]
public ActionResult GetUserMsg(SysUser user)
{
string usercode = user.UserCode;
string userpwd = user.UserPwd;
if (usercode != "admin" || userpwd != "admin")
{
return RedirectToAction("../Home/error");
}
return RedirectToAction("main");
}
}
}
注意:RedirectToAction("main")是重定向你要登录的页面,RedirectToAction("error")则是错误提示页面
实体model类 SysUser
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcStudy.Models
{
public class SysUser
{
public string UserCode { get; set; }
public string UserPwd { get; set; }
public SysUser() { }
public SysUser(string usercode,string userpwd) {
usercode = this.UserCode;
userpwd = this.UserPwd;
}
}
}
登录页面的效果如图
登录成功页面
登录失败页面
注意:登录失败时,也可以重定向在原先的登录页面
asp.net.mvc 中form表单提交控制器的2种方法和控制器接收页面提交数据的4种方法的更多相关文章
- MVC中Form表单的提交
概述 Web页面进行Form表单提交是数据提交的一种,在MVC中Form表单提交到服务器.服务端接受Form表单的方式有多种,如果一个Form有2个submit按钮,那后台如何判断是哪个按钮提交的数据 ...
- form表单中控件较多,加载完成后切换页面都很慢的解决方法
form表单中控件较多,加载完成后点击都很慢,为什么?我一页面中form表单里面上百个控件(如input.select.radio.checkbox等),还有一些js脚本,加载速度还可以,都能全部显示 ...
- from表单实现无跳转上传文件,接收页面后台数据。
本文基于我刚写的http://www.cnblogs.com/iwang5566/p/6287529.html进行了简单的扩展,实现页面无跳转表单数据提交,并接收后台返回的数据. 下载好,上一篇文章d ...
- from表单实现无跳转上传文件,接收页面后台数据
实现无跳转发送表单数据.文件,并能接收后台返回的数据. 主要技术要点: 1.form表单添加target属性,指定一个iframme的name:form表单提交后在iframe内嵌窗口接受响应,主页面 ...
- mvc中form表单提交的几种形式
第一种方式:submit 按钮 提交 <form action="MyDemand" method="post"> <span>关键字: ...
- ASP.NET MVC 与Form表单交互
一,Form包含文件类(单选文件) <form id="ImgForm" method="POST" enctype="multipart/fo ...
- MVC中处理表单提交的方式(Ajax+Jquery)
MVC中处理表单有很多种方法,这里说到第一种方式:Ajax+Jquery 先看下表单: <form class="row form-body form-horizontal m-t&q ...
- form表单里如果只存在一个文本框,enter键提交
在这里说一说浏览器里form表单的默认行为 我们都知道浏览器是存在很多默认行为的,可能是出于常用行为考虑又或者是历史原因.但有时候我们不需要这些默认行为.以下: 1).当form表单里只存在一个inp ...
- laravel中form表单,ajax传值没反应
laravel中form表单,ajax传值没反应时,可能是令牌有问题. form中添加: {{csrf_token()}} ajax中添加: data: {'page': page, '_token' ...
随机推荐
- 【News】SpagoBI中国官方微信对外发布
爱数据,爱分析,爱达比 致力于国际优秀开源BI应用在中国的普及推广,用数据开启中小企业智慧之门: 扫描上图二维码,关注SpagoBI中国官方微信,2015年8月18日将在腾讯课堂.百度传课.网易云课堂 ...
- session和jsessionid有什么关系
首先,并不是说你一打开一个页面就会产生一个session. 所谓session你可以这样理解:当你与服务端进行会话时,比如说登陆成功后,服务端会为你开壁一块内存区间,用以存放你这次会话的一些内容,比如 ...
- check member function
template<typename T> struct has_member_foo11 { private: template<typename U> static auto ...
- SetHandleInformation设置内核对象标志
当父进程创建子进程时,子进程将继承父进程的内核对象.这时如果要控制子进程使用父进程的内核对象.可以使用 SetHandleInformation设置. BOOL SetHandleInformatio ...
- 为应用程序池 'DefaultAppPool' 提供服务的进程无法响应Ping
打开Windows 2008 的事件查看器,应用警告提示: 为应用程序池 'DefaultAppPool' 提供服务的进程无法响应 Ping.进程 ID 是 '2144'. 注意: 需要重新注册一vb ...
- delphi7的新生,参与分布式应用开发,调用RESTful API,Json的应用
前言: 1.公司delphi7开发的传统软件还活得好好的,但是大家都知道delphi早已经日落西山了,现在成了后进.追随者.细细算了已经6.7不用了.新的delphixe7呢,没有时间成本去适应和研究 ...
- char str[]和char *str的区别
1.http://blog.csdn.net/szchtx/article/details/10396149 char ss[]="C++"; ss[0]='c'; ...
- AjaxUploader使用
一.简单上传(Simple Upload with Progress) <CuteWebUI:Uploader ID="ajaxUploader" runat="s ...
- 【Thinking in Java-CHAPTER 3】操作符
优先级 赋值 对象在使用c=d,那么c和d都指向原本只有d指向的那个对象. 方法调用中的别名问题:当一个对象作为参数传递到一个函数中,函数改变了这个参数,则改变了传递进来的对象: 自增和自减 浮点型的 ...
- hbase 使用
hbase shell命令的使用 再使用hbase 命令之前先检查一下hbase是否运行正常 hadoop@Master:/usr/hbase/bin$ jps HMaster NameNode Se ...