asp.net实现利用反射,泛型,静态方法快速获取表
ASP.NET:利用反射、泛型与静态方法快速映射表单值至Model
在ASP.NET开发中,我们经常面临一个常见的挑战——如何从表单中获取用户输入并将其映射到Model对象中。手动编写代码为每个字段赋值不仅耗时,而且容易出错。幸运的是,我们可以借助反射、泛型以及静态方法来解决这个问题。
对于新手来说,这是一个非常实用的技巧。不必再为重复的赋值代码烦恼,只需要利用这些高级编程技术,就能轻松实现自动化映射。
设想一个常见的场景:我们需要从表单中获取数据并填充到一个新闻Model对象中。传统的做法可能是这样的:
```csharp
News news = new News();
news.Id = int.Parse(Request.Form["Id"]);
news.Category = int.Parse(Request.Form["Category"]);
news.Title = Request.Form["Title"];
news.CreateTime = DateTime.Parse(Request.Form["CreateTime"]);
```
这种方法既繁琐又容易出错。下面,我们将介绍如何使用反射、泛型以及静态方法来简化这个过程。
我们创建一个泛型静态类HenqPost,其中的GetPost方法能够根据提供的表单数据自动为Model对象赋值。这个类只需要通过模型类型T作为参数,无需实例化。这是一个典型的利用泛型约束(T: new())的例子,确保传入的类型可以创建新实例。
代码如下:
```csharp
public static class HenqPost
{
///
/// 为Model赋值
///
///
/// 模型实例
/// 表单数据
///
public static int GetPost
{
int va = 0; // 记录成功赋值的属性数
Type type = t.GetType(); // 获取模型类型
PropertyInfo[] pi = type.GetProperties(); // 获取属性集合
foreach (PropertyInfo p in pi)
{
if (form[p.Name] != null)
{
try
{
p.SetValue(t, Convert.ChangeType(form[p.Name], p.PropertyType), null); // 为属性赋值并转换类型
va++; // 成功赋值一个属性,计数器加1
}
catch
{
// 忽略异常,继续处理下一个属性
}
}
}
return va; // 返回成功赋值的属性数量
}
}
``` 此后,你可以通过以下两行代码轻松为新闻模型赋值: ```csharp News news = new News(); HenqPost
编程语言
- asp.net实现利用反射,泛型,静态方法快速获取表
- JavaScript对象数组的排序处理方法
- 微信小程序 列表的上拉加载和下拉刷新的实现
- jQuery实现的事件绑定功能基本示例
- JS小数运算出现多为小数问题的解决方法
- ajax技术制作得在线歌词搜索功能
- react-router4 配合webpack require.ensure 实现异步加载的
- php教程之魔术方法的使用示例(php魔术函数)
- jquery实现去除重复字符串的方法小结
- window.open不被拦截的简单实现代码(推荐)
- VSCode提高 Node 和 Vue 开发效率的插件推荐
- laravel单元测试之phpUnit中old()函数报错解决
- Vue中 key keep-alive的实现原理
- 科普:多线程与异步的区别
- thinkphp3.x自定义Action、Model及View的简单实现方法
- 聊一聊JS中的prototype