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种方法的更多相关文章

  1. MVC中Form表单的提交

    概述 Web页面进行Form表单提交是数据提交的一种,在MVC中Form表单提交到服务器.服务端接受Form表单的方式有多种,如果一个Form有2个submit按钮,那后台如何判断是哪个按钮提交的数据 ...

  2. form表单中控件较多,加载完成后切换页面都很慢的解决方法

    form表单中控件较多,加载完成后点击都很慢,为什么?我一页面中form表单里面上百个控件(如input.select.radio.checkbox等),还有一些js脚本,加载速度还可以,都能全部显示 ...

  3. from表单实现无跳转上传文件,接收页面后台数据。

    本文基于我刚写的http://www.cnblogs.com/iwang5566/p/6287529.html进行了简单的扩展,实现页面无跳转表单数据提交,并接收后台返回的数据. 下载好,上一篇文章d ...

  4. from表单实现无跳转上传文件,接收页面后台数据

    实现无跳转发送表单数据.文件,并能接收后台返回的数据. 主要技术要点: 1.form表单添加target属性,指定一个iframme的name:form表单提交后在iframe内嵌窗口接受响应,主页面 ...

  5. mvc中form表单提交的几种形式

    第一种方式:submit 按钮 提交 <form action="MyDemand" method="post"> <span>关键字: ...

  6. ASP.NET MVC 与Form表单交互

    一,Form包含文件类(单选文件) <form id="ImgForm" method="POST" enctype="multipart/fo ...

  7. MVC中处理表单提交的方式(Ajax+Jquery)

    MVC中处理表单有很多种方法,这里说到第一种方式:Ajax+Jquery 先看下表单: <form class="row form-body form-horizontal m-t&q ...

  8. form表单里如果只存在一个文本框,enter键提交

    在这里说一说浏览器里form表单的默认行为 我们都知道浏览器是存在很多默认行为的,可能是出于常用行为考虑又或者是历史原因.但有时候我们不需要这些默认行为.以下: 1).当form表单里只存在一个inp ...

  9. laravel中form表单,ajax传值没反应

    laravel中form表单,ajax传值没反应时,可能是令牌有问题. form中添加: {{csrf_token()}} ajax中添加: data: {'page': page, '_token' ...

随机推荐

  1. SharedPreference注册OnSharedPreferenceChangeListener一直无法回调问题

    注册代码如下: SharedPreferences sp = getSharedPreferences("AndroidDemo", Context.MODE_PRIVATE); ...

  2. (原)win8下编译GLUT

    1.到opengl官网下载glut源代码 2.修改glutwin32.mak下 # MSVC install directoriesLIBINSTALL     = XXXXX\VC\lib //vs ...

  3. CSS - DIV标签width根据内容自适应

    设置样式: 父标签{ width: auto; display: inline-block; } 子标签 { // 内容自动填充父节点宽度: } JSFiddle Demo: http://jsfid ...

  4. jade模板引擎学习笔记(WebsStorm9.0.3+ nodejs+express+jade)

    jade环境搭建 jade标签写法 jade注释 jade添加类名.id.属性 jade添加脚本,css jade变量 jade多行文本显示 jade流程代码:for,each,while jade流 ...

  5. WPF之DataGrid

    1.WPF 4 DataGrid 控件(基本功能篇) 基本使用,绑定数据展示 2.WPF 4 DataGrid 控件(自定义样式篇) 定义行,列,头,单元格等样式 3.WPF 4 DataGrid 控 ...

  6. 重构第3天:方法提公(Pull Up Method)

    理解:方法提公,或者说把方法提到基类中. 详解:如果大于一个继承类都要用到同一个方法,那么我们就可以把这个方法提出来放到基类中.这样不仅减少代码量,而且提高了代码的重用性. 看重构前的代码: usin ...

  7. [原]Android打包之Gradle打包

    最近尝试了一下Android的Gradle打包,发现确实比Ant打包会方便很多,特此记录下来. 注:android的gradle现在插件的版本已经是0.14.3了,对于一些老的方法和api,有一些已经 ...

  8. struts2完全捕获404错误的方法

    目前在做一个网络应用程序,struts2 + spring + hibernate,服务器是tomcat.希望用户在IE地址栏乱敲的时候,所敲入的所有未定义的URL都能被程序捕捉到,然后转到一个自制的 ...

  9. rails利用big_sitemap生成sitemap

    # Gemfile gem 'big_sitemap' # lib/tasks/sitemap.rake require 'big_sitemap' namespace :custom do desc ...

  10. Swift初学习

    距离swift发布10天了,也简单看了一下swift的语法,个人感觉相对于object-c很是简单明了.Swift的出现并不能说明iOS开发简单了很多,有可能会变得复杂,你需要学习两门编程语言,因为在 ...