在HomeControl中添加一个Action,代码如下:

public ActionResult Add()
{
return View();
}

当View()中不写任何参数时,默认会调用同名的视图,添加一个视图Add.cshtml(视图有两种引擎,不同引擎渲染html页面的方式不一样,这里选择razor引擎),同时添加一个表单,代码如下:

<body>
<div>
@using (Html.BeginForm())
{
<input type="text" id="id1" name="id1"/><br/>
<input type="text" id="name1" name="name1"/><br/>
<input type="text" id="gender" name="gender"/><br/>
<input type="submit" value="提交"/>
}
</div>
</body>

通过浏览器查看源码可以看到,生成了一个表单,如下图:

<form action="/Home/Add" method="post">
<input type="text" id="id1" name="id1"/><br/>
<input type="text" id="name1" name="name1"/><br/>
<input type="text" id="gender" name="gender"/><br/>
<input type="submit" value="提交"/>
</form>

可以看到在BeginForm()中未写参数,默认会提交到当前的后台,post方式请求。跟asp.net很像

既然提交到后台,那么后台肯定要有个方法接受数据,而且是与请求的视图同名的,那么我们接下来就创建一个Action,为了区分与原来Add()的,这里加个特性,该方法直接说Post请求,代码如下:

[HttpPost]
public ActionResult Add(UserInfo user)
{
int a = 10;//此处设断点
if (user.Id == 0)
{
int id = int.Parse(Request["Id1"]);
string name = Request["Name1"];
string gender = Request["Gender"];
user = new UserInfo() {Id = id, Name = name, Gender = gender};
} return Content("OK");
}

该Action接受post请求,且与原有Add()构成重载,参数为UserInfo 类型的参数,UserInfo类的代码如下:

namespace _02HtmlHelper.Models
{
public class UserInfo
{
public int Id { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
}
}

在int a=10,前面设一个断点,然后选择【工具】-【添加到进程】-【iisexpress  托管】

然后在刷新html页面,再在html中输入数据,提交表单,这个时候,会自动运行到断点处,本次测试输入的数据如下图:

这个时候,可以看到传入Add()方法的参数,user中的值如下:

Gender:33

Id:0

Name:null

分析结果,得出知识:

传入值为:

id1=11;name1=22;gender=33

方法中的UserInfo接收到的参数为

Id=0;Name=null;Gender=33

1.在客户端中name的大小写不重要

2.不管有没有传入id的值,id总有值,这点很重要

3.当前台发送数据到后台时,mvc内部会自动为把我们把参数拼接成对象,那我们在前台使用对象的话,就可以少写很多代码了

接下来修改前台代码,用对象的方式,因为该视图在添加的时候,为强类型某种类型,所以要在开头强类型为UserInfo,代码如下:

@model _02HtmlHelper.Models.UserInfo
@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Add</title>
</head>
<body>
<div>
@using (Html.BeginForm())
{
@Html.TextBoxFor(u=>u.Id)<br/>
@Html.TextBoxFor(u=>u.Name)<br/>
@Html.TextBoxFor(u=>u.Gender)<br/> <input type="submit" value="提交"/>
} </div>
</body>
</html>

上面页面运行后,查看源代码,如下,对于name=’Id’的部分,会在另外文章中说明:

<form action="/Home/Add" method="post">
<input data-val="true" data-val-number="字段 Id 必须是一个数字。" data-val-required="Id 字段是必需的。" id="Id" name="Id" type="text" value="" /><br/>
<input id="Name" name="Name" type="text" value="" /><br/>
<input id="Gender" name="Gender" type="text" value="" /><br/>
<input type="submit" value="提交"/>
</form>

按照上面步骤,在int a=10处设立断点,添加进程,运行后,查看传入Add(UserInfo user)中user的值,所有的值,后台全部接受到了。

MVC学习-发送请求的更多相关文章

  1. ASP.NET MVC学习系列(二)-WebAPI请求

    继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...

  2. ASP.NET MVC学习系列(二)-WebAPI请求(转)

    转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的g ...

  3. [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参

    [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...

  4. ASP.NET MVC学习系列(二)-WebAPI请求 转载https://www.cnblogs.com/babycool/p/3922738.html

    继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...

  5. spring MVC 管理HttpClient---实现在java中直接向Controller发送请求

    在spring MVC中,大多数时候是由客户端的页面通过ajax等方式向controller发送请求,但有时候需要在java代码中直接向controller发送请求,这时可以使用HttpCilent实 ...

  6. 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期

    腾讯云图片鉴黄集成到C#   官方文档:https://cloud.tencent.com/document/product/641/12422 请求官方API及签名的生成代码如下: public c ...

  7. Ajax学习系列——向服务器发送请求

    1.如何发送请求? 如果需要向服务器发送请求,我们使用的是XMLHttpRequest对象中的open()和send()方法. var xhr = new XMLHttpRequest();//具体创 ...

  8. MVC学习系列14--Bundling And Minification【捆绑和压缩】--翻译国外大牛的文章

    这个系列是,基础学习系列的最后一部分,这里,我打算翻译一篇国外的技术文章结束这个基础部分的学习:后面打算继续写深入学习MVC系列的文章,之所以要写博客,我个人觉得,做技术的,首先得要懂得分享,说不定你 ...

  9. Spring MVC 学习笔记(整理)

    SpringMVC学习 1.概述 Spring MVC是一种基于Java实现MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行解耦,基于请求-响应模型帮助我们 ...

随机推荐

  1. poj——3728 The merchant

    The merchant Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5055   Accepted: 1740 Desc ...

  2. Eclipse使用Maven时,修改默认中央仓库后的配置报错找不到包的问题解决

    一般在公司内容配置Maven时会在settings.xml文件下配置私服nexus地址,那么修改完之后在Eclipse中如果不指定用户目录级别的settings.xml文件会出现找不到包的问题. se ...

  3. Oracle将一列值逗号拼接wm_concat函数

    --Oracle12c不再支持该函数,需要手动处理 --管理员登录授权给用户权限 GRANT CREATE SYNONYM TO c##sdic; / --创建 TYPE CREATE OR REPL ...

  4. C#代码读写XML

    <1> 创建XML文档 using System; using System.Collections.Generic; using System.Linq; using System.Te ...

  5. linux系统编程:线程同步-信号量(semaphore)

    线程同步-信号量(semaphore) 生产者与消费者问题再思考 在实际生活中,仅仅要有商品.消费者就能够消费,这没问题. 但生产者的生产并非无限的.比如,仓库是有限的,原材料是有限的,生产指标受消费 ...

  6. Android AsyncTask 分析内部实现

    sdk3.0前,使用内部的线程池,多线程并发运行.线程池大小等于5,最大达128 sdk3.0后,使用默认的serial线程池.运行完一个线程,再顺序运行下一个线程.sdk3.0<=curren ...

  7. 阿里云CentOS7.3搭建多用户私有git服务器(从安装git开始)

    起因 自己会有练手的不敢公开的项目,就自己搭建个服务器放自己的渣代码了. 在经历了连不上服务器.没有访问权限.没法提交以后,我打通了任督二脉. 我这个git服务器适合条件:1.就那么几个人小项目,不是 ...

  8. [DLX+bfs] hdu 4069 Squiggly Sudoku

    题意: 给你9*9的矩阵.对于每一个数字.能减16代表上面有墙,能减32代表以下有墙. .. 最后剩下的数字是0代表这个位置数要求,不是0代表这个数已知了. 然后通过墙会被数字分成9块. 然后做数独, ...

  9. javascript的Date时差

    当有日期字符串形如: var dt = "2015-03-16T23:59:59";//注意其中有个T,这是什么表示法?不清楚,可能是GMT标准时 然后转换成日期对象,系统会自动加 ...

  10. zabbix如何添加主机监控

    1,首先,监控的主机安装zabbix客户端.zabbix提供多种监控方式,我们这里监控的主机上边安装agentd守护端进行数据收集并监测. 其中客户端安装我们这里就不介绍了,请参考之前教程里边的客户端 ...