ASP.NET/C# 动作方法参数映射及映射模型详解

ASP.NET/C# 动作方法参数映射及映射模型详解

动作方法的参数

1.获取表单的常规方法

我们以前在动作方法中获取 URL 和表单数据的方法,代码如下:

ASP.NET/C# 动作方法参数映射及映射模型详解

除了上面的方法外,以下介绍新的方法。

2.动作方法参数的映射

(1)参数映射的基本使用: 其实,在 ASP.NET MVC 框架中,给我们提供了非常好的获取参数的方法,那就是可以通过参数映射的形式直接获取参数值,而无需再像上面那样单独获取,只要我们提交的参数名称(比如文本框的name)和我们定义的动作方法参数一致基本就可以,下面我们先看一个例子:

ASP.NET/C# 动作方法参数映射及映射模型详解

(2)参数映射的好处: 通过上面可以看出,我们省去了参数获取的步骤,这样在参数较多的时候开发效率是非常明显的。

(3)动作方法参数映射来源,如下表所示:

ASP.NET/C# 动作方法参数映射及映射模型详解

(4)动作方法参数映射要求:

第一,参数名要和目标数据参数名一致(不区分大小写)。

ASP.NET/C# 动作方法参数映射及映射模型详解

第二,参数数据类型要和来源数据的目标数据类型一致
ASP.NET/C# 动作方法参数映射及映射模型详解

3.值类型参数映射问题

(1)值类型参数有时候会失败,我们来做一个测试:比如,我们要求用户输入用户名和密码后登录,但是用户只是输入了密码,没有输入用户名,那么提交后会有什么结果呢?

ASP.NET/C# 动作方法参数映射及映射模型详解
ASP.NET/C# 动作方法参数映射及映射模型详解
ASP.NET/C# 动作方法参数映射及映射模型详解

(2)原因分析:是因为 int 类型的参数,必须有数据才行,因为用户从视图中传递的数据是 null,而参数映射的时候是无法将 null 转换成 int 类型。所以,大家明白这个道理,我们只需要将参数 int 类型定义成可为空类型 int?即可。

ASP.NET/C# 动作方法参数映射及映射模型详解

提示:虽然我们定义了可为空类型,但是并不是说我们开发中以后可以随便的使用带?的可为空类型,比如实际开发中,我们肯定会有验证,也就是说用户登录 ID 是不会为 null 的,刚才我们只是这样一个测试,如果您在写项目时,确实前端不需要验证,也允许为空,而后台是值类型,这时候就用刚才我们给出的方法解决是最完美的。

4.映射模型

(1)前面的参数映射虽然解决了获取参数的麻烦,但如果参数还是很多怎么办?如下图所示:

ASP.NET/C# 动作方法参数映射及映射模型详解

(2)解决思路:按照我们面向对象编程的规范,一个方法的参数是不能过多的,3-4 个就已经不少了,再多就不方便了,于是我们在基础课程阶段告诉大家了解决方法,那就是使用实体类来解决!非常好,有了实体类,在动作方法中,我们照样能够使用!

(3)使用模型映射的基本步骤:第一,获取表单数据;第二,自动构造实体模型,第三,调用业务逻辑方法并传递模型。具体代码实现如下:

ASP.NET/C# 动作方法参数映射及映射模型详解

(4)模型映射的总结。通过上面的例子,您应该感觉出来了,模型自动映射最关键的就是参数的 name 一定要和实体类的属性一致,因为在自动构造模型的时候,就是根据这个参数 name 对应到实体类的属性,这个非常关键。