博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC学习-发送请求
阅读量:4533 次
发布时间:2019-06-08

本文共 2293 字,大约阅读时间需要 7 分钟。

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

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

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

    
@using (Html.BeginForm()) {
}

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

可以看到在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;}    
Add
@using (Html.BeginForm()) { @Html.TextBoxFor(u=>u.Id)
@Html.TextBoxFor(u=>u.Name)
@Html.TextBoxFor(u=>u.Gender)
}

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

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

转载于:https://www.cnblogs.com/kimisme/p/4192705.html

你可能感兴趣的文章
解决mysql无法显示中文/MySQL中文乱码问号等问题
查看>>
CentOS 7.2 配置mysql5.7
查看>>
python输出转义字符
查看>>
计算一个整数二进制中1的个数
查看>>
netdom join 错误:指定的域不存在,或无法联系。
查看>>
Android中Dialog的使用
查看>>
Android Activity接收Service发送的广播
查看>>
[Leetcode] Spiral Matrix | 把一个2D matrix用螺旋方式打印
查看>>
加速和监控国际网络
查看>>
【Flex】读取本地XML,然后XML数据转成JSON数据
查看>>
字符串循环右移-c语言
查看>>
解决从pl/sql查看oracle的number(19)类型数据为科学计数法的有关问题
查看>>
古训《增广贤文》
查看>>
职场的真相——七句话
查看>>
xcode命令行编译时:codesign命令,抛出“User interaction is not allowed.”异常 的处理...
查看>>
[转载]开机出现A disk read error occurred错误
查看>>
STM32 C++编程 002 GPIO类
查看>>
ELK-Elasticsearch安装
查看>>
day40-socket编程
查看>>
Django后台管理admin笔记
查看>>