ASP.NET中实现Form表单字段值自动填充到操作模型中

   这篇文章主要介绍了ASP.NET中实现Form表单字段值自动填充到操作模型中,本文模仿MVC模式中的自动映射表单了模型,使用泛型和反射实现,需要的朋友可以参考下

  我们知道ASP.NET MVC有个强大的地方就是Form表单提交到action的时候,可以直接将Form的参数直接装配到action的参数实体对象中

  比如

   代码如下:

  action方法 Register(UserModel userModel)

  {

  .............................

  }

  在提交表单的时候,会自动讲表单里面的字段封装到对应的UserModel字段里面

  那么 WebForm里面可不可以也紫将呢?

  因为每次都要去获得数据,优秀的程序员应该要学会代码封装,代码复用,重复的工作不要做

  我们其实可以利用反射来实例化对象的(自动装配)

  好了废话不多....

  pageload里面很简单了

   代码如下:

  protected void Page_Load(object sender, EventArgs e)

  {

  if (!IsPost())

  {

  InitPage();//第一次访问呈现页面

  }

  else

  {

  UserModel userModel = AssembleModel(base.valueCollection);

  }

  }

  关键就是基类里面的AssembleModel 方法了

  基类里面

  我们首先获取到上下文的参数 IT404

   代码如下:

  protected NameValueCollection valueCollection = HttpContext.Current.Request.Params;

  基类很简单,就是将上下文的提交的参数存放到valueCollection

  然后再看AssembleModel方法了,这是一个泛型方法

  代码如下:

  ///

 

  /// 反射获取类的属性

  ///

 

  ///

  ///

  protected PropertyInfo[] GetPropertyInfoArray(Type type)

  {

  PropertyInfo[] props = null;

  try

  {

  object obj = Activator.CreateInstance(type);

  props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);

  }

  catch (Exception ex)

  {

  }

  return props;

  }

  ///

 

  /// 根据NameValueCollection 自动装配

  ///

 

  ///

  ///

  ///

  protected T AssembleModel(NameValueCollection valueCollection)

  {

  PropertyInfo[] propertyInfoList = GetPropertyInfoArray(typeof(T));

  object obj = Activator.CreateInstance(typeof(T), null);//创建指定类型实例

  foreach (string key in valueCollection.Keys)//所有上下文的值

  {

  foreach (var PropertyInfo in propertyInfoList)//所有实体属性

  {

  if (key.ToLower() == PropertyInfo.Name.ToLower())

  {

  PropertyInfo.SetValue(obj, valueCollection[key], null);//给对象赋值

  }

  }

  }

  return (T)obj;

  }

  很简单,就是遍历参数,然后用反射遍历出实体类的共有属性,然后根据名字name来匹配和赋值

  所以以后我们只需要一句代码 就能自动装配上从客户端存过来的值了

  代码如下:

  UserModel userModel = AssembleModel(base.valueCollection);

时间: 2024-07-31 11:21:35

ASP.NET中实现Form表单字段值自动填充到操作模型中的相关文章

ASP.NET中实现Form表单字段值自动填充到操作模型中_实用技巧

我们知道ASP.NET MVC有个强大的地方就是Form表单提交到action的时候,可以直接将Form的参数直接装配到action的参数实体对象中 比如 复制代码 代码如下: action方法 Register(UserModel userModel) {    ............................. } 在提交表单的时候,会自动讲表单里面的字段封装到对应的UserModel字段里面 那么 WebForm里面可不可以也紫将呢? 因为每次都要去获得数据,优秀的程序员应该要学会

jQuery中设置form表单中action值的实现方法_jquery

html代码: <form id="myFormId" name="myForm" action="" method="post"> <input type="hidden" id="inParam" name="inParam" /> <input type="hidden" id="tstype"

phpcmsv9中如何提交自定义表单字段的值(取不到数值)

问题描述 phpcmsv9中如何提交自定义表单字段的值(取不到数值) 哪位高人帮看看下面代码,怎么也提交不进去,(phpcms-v9) 我在表单向导中添加了新的字段,像下面的"xingming"字段,并开启了要求验证,要求必填,当提交时总提示我,字段最小值为1,就是说没有检测到我输入的值.下面的代码是从例子中超过来的,只不过是将foreach循环去掉直接写了文本输入框,如果用自带的foeach循环显示出form表提交就没有问题.请问高人下面这么写有错吗!!!???. 姓名:

ASP.NET在MVC控制器中获取Form表单值的方法_实用技巧

本文实例讲述了ASP.NET在MVC控制器中获取Form表单值的方法.分享给大家供大家参考,具体如下: 在MVC控制器中,如果我们想直接获取表单中某个标签元素的值,可以使用MVC中提供的FormCollection类,具体用法如下所示: 视图部分: @using (Html.BeginForm()) { <text>您输入的值是:</text><span>@ViewBag.FormValue</span> <input type="text&

EasyUI中实现form表单提交的示例分享

这里给大家分享的是一段使用EasyUI中实现form表单提交的方法的核心代码,小伙伴们根据自己的需求补全form部分吧,希望大家能够喜欢. 代码如下: $('#form').form({ url : 'test/add.do', onSubmit : function() { parent.$.messager.progress({ title : '提示', text : '数据处理中,请稍后....' }); var gridValid = endEdit();// 子表退出编辑验证 if

PHP处理大量表单字段的便捷方法_php实例

关于程序开发中的表单批量提交策略 很多时候一个表单太多的字段,如何能够高效获取表单字段,也为如何提神开发的效率和统一性? 比如一个系统的某个有26个字段,那么我用表单的名称用26个a到z的字母, 你是选择 <input type="text" name="a">,<input type="text" name="a">,--,<input type="text" name=&q

php上传图片获取路径及给表单字段赋值的方法_php技巧

本文实例讲述了php上传图片获取路径及给表单字段赋值的方法.分享给大家供大家参考,具体如下: 1. 调用方法例子: 大图路径: <input type="text" name="bigImageURL" id="bigImageURL" value=""> <iframe src="uppic.php?id=bigImageURL" width="600" height

在jsp页面中如果form表单中一些不能为空的框为空了,就不能提交表单

问题描述 在jsp页面中如果form表单中一些不能为空的框为空了,就不能提交表单 在jsp页面中如果form表单中一些不能为空的框为空了,就不能提交表单 比如注册的时候如果用户名或是密码为空,则不能提交表单 解决方案 这当然是 放 js里验证了... 解决方案二: 可以看看validate,比如,validate="{required:true}"就是指非空 解决方案三: 通过控制写js方法form的onsubmit来做验证,或者使用jquery的表单控件 解决方案四: 在javasc

在jsp中提交form表单不能跳转进方法

问题描述 在jsp中提交form表单不能跳转进方法 我用的form表单提交的,jsp里 这样,js是function search(){ var myselec = $('#myselectHidden').val(); $.ajax({ type:'POST', data: {param:"myselec",isAll:"yes",param2:myselec}, url:'outQueryOption', success:function(data){ var