如何解决ASP.NET新增时多字段取值的问题_实用技巧

ASP.NET 开发人员在卡发时经常会碰到一个情况,就是新增的页面中字段太多,在点击保存的时候需要一个一个的赋值实体或者构建SQL语句去保存。这样不仅浪费体力还需要占用大量的文本行控件去写代码。经过构思是否可以使用一种更方便的办法去解决呢?提高代码的内聚性。

 1.思路

 我们知道一般新增页面最多的就是一大堆文本框让用户输入内容,然后点击保存按钮进行提交将数据持久化到数据库。

在点击提交的时候传统方式就是一个一个文本框的读取赋值。

 HTML代码如下:

<asp:TextBox ID="TextBox2" runat="server" Text="TextBox2" ></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server" Text="TextBox3" ></asp:TextBox>
<asp:Button ID="Button2" runat="server" Text="提交" onclick="Button2_Click" /> 

按钮提交事件代码:

protected void Button2_Click(object sender, EventArgs e)
{
  string colName1 = TextBox2.Text;
  string colName2 = TextBox3.Text;
  DataSave(colName1,colName2);
} 

如果页面的字段特别多就会导致需要些很多的赋值语句。所以在多字段的情况下我们可以去遍历页面上的控件去赋值,然后将结果放入集合中去提交持久化数据。

按钮提交时间代码:

protected void Button2_Click(object sender, EventArgs e)
 {
   Dictionary<string, string> entityDic = new Dictionary<string, string>();
   foreach (Control cnl in MyPanel.Controls)
   {
      if (cnl is TextBox)
      {
       TextBox tb = (cnl as TextBox);
       entityDic.Add(tb.GetMapColumnsName(), tb.Text);
      }
   }
   IDBHelper dbHelp = DataBaseProvider.Instance.GetDBHelper("orm");
   string result = dbHelp.DataSave(entityDic);
}

分析一下代码:

1.首先定义一个字典集合用来存放字段文本框中的值,key 存列明,value存实际输入的值

 2. 循环遍历容器中的控件,给集合添加节点,key为控件的ID也就是数据库的列明,value是实际输入的值,也就是需要新增到数据库的值

3.调用保存方法保存数据

问题:

这个时候可能有人会问了,将页面上的控件名字跟数据库的字段名如果保持一致是不是太不安全啦?解决这个问题的办法,就是将数据库字段一自己自定义的一种算法加密显示在页面,在封装一个TextBox的扩展方法,这个方法用来解析这个算法,返回正确的列明,代码如下:

public static class TextBoxEx
{
  public static string GetMapColumnsName(this TextBox my)
  {
   string myColumnsName = my.ID;
   //将来文本ID可以为了安全存为加密过的值 这里可以负责解密
   return myColumnsName;
  }
}

这样就可以用很少的代码来解决,新增或者编辑时,页面的字段太多的问题啦!

2.应对需求的更变

 现在我们如果页面的字段新增了,或者减少了,我们可以不必就该,提交按钮的事件,而是在页面上新增或者删除对应的展示控件就行啦!

例如页面有5个TextBox控件,如果需要加入一个我们只需在页面上多写一个TextBox控件,将ID写成自己加过密的文本,就OK了!

以上就是跟大家分享的如何解决ASP.NET新增时多字段取值问题的方法,希望大家仔细阅读,运用到自己的学习当中。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索asp.net
, 取值
多字段
,以便于您获取更多的相关知识。

时间: 2024-12-26 17:39:35

如何解决ASP.NET新增时多字段取值的问题_实用技巧的相关文章

解决ASP.NET Core Mvc文件上传限制问题实例_实用技巧

一.简介 在ASP.NET Core MVC中,文件上传的最大上传文件默认为20MB,如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了Web.Config我们应该如何下手呢? 二.设置上传文件大小 1.应用程序级别设置 我们需要在 ConfigureServices方法中添加如下代码,设置文件上传的大小限制为60 MB. public void ConfigureServices(IServiceCollection services) { servicesConfigure<For

轻松解决asp.net用户ASPNET登录失败问题的方法分享_实用技巧

执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Data.SqlClient.SqlException: 用户 'XXXASPNET' 登录失败. 今天将网站迁移过来后,就发现这个问题.经过摸索,发现原因是我们登录数据库的角色对数据库的权限不够. 解决办法: 1.打开数据库企业管理器,然后选择数据库---安全性---找到刚才报错的哪个'XXXASPNET' --右键"属性"; 2.选择

asp.net 数据绑定时对数据列做个性化处理_实用技巧

复制代码 代码如下: protected void dgQuery_ItemDataBound(object sender, DataGridItemEventArgs e) { if ((e.Item.ItemType != ListItemType.Header) && (e.Item.ItemType != ListItemType.Footer)) { DataRow drRow = ((DataRowView)e.Item.DataItem).Row; string common

ASP.NET文本框密码赋默认值的方法_实用技巧

对于普通的文本输入框,可以使用下边的方法赋默认值: <asp:TextBox ID="TextBox1" runat="server">12345</asp:TextBox> 将输入框类型改为密码后,页面上密码框总是空白,默认值丢失: <asp:TextBox ID="TextBox1" runat="server" TextMode="Password">12345&l

asp.net 判断数组是否存在某个值的方法_实用技巧

方法一: 复制代码 代码如下: string str1 = "0,1,2,3,4,5,6 "; string[] str = str1.Split( ', '); bool hasFlag=false; foreach (string a in str) { if (a == "7 ") { hasFlag=true; break; } } if(hasFlag) { //执行当前页 } else { //跳转 } 方法二 复制代码 代码如下: string []

ASP.NET2.0中用Gridview控件操作数据的代码_实用技巧

其中,在数据控件方面,增加了不少控件,其中的Gridview控件功能十分强大.在本文中,将探讨Gridview控件中的一些功能特性和用法,如果各位读者对Gridview控件不大了解,可以通过<使用ASP.NET 2.0中的Gridview控件>一文,来对Gridview控件有个初步的认识. 1.使用Gridview插入新记录 在Gridview控件中,可以实现插入新记录的操作(见<使用ASP.NET 2.0中的Gridview控件>)一文,但如果想实现在Gridview中,实现在G

asp.net开发中怎样去突破文件依赖缓存_实用技巧

在Web项目中可以使用Session,Application等来缓存数据,也可以使用Cache来缓存. 今天我们特别关注的是Cache缓存.Cache位于命名空间System.Web.Caching命名空间下,看到这里我们想到的是它在Web项目中使用. 说明:Cache 类不能在 ASP.NET 应用程序外使用.它是为在 ASP.NET 中用于为 Web 应用程序提供缓存而设计和测试的.在其他类型的应用程序(如控制台应用程序或 Windows 窗体应用程序)中,ASP.NET 缓存可能无法正常工

ASP中获得Select Count语句返回值的方法_应用技巧

我们一般统计数据库记录时会用到Select Count(*)语句,当我们使用SQL Server的查询分析器时,直接输入Select Count(*) From 表名即会统计出该表中有几条记录,可是我们用ASP来实现时该怎么返回值呢?即如何输出统计出来的记录总数呢?请接着往下看. 其实我们只要给SQL语句的查询结果取个别名即可解决问题,然后用ASP语句输出这个别名即可,相关代码如下: 复制代码 代码如下: Set rs=conn.Execute("Select Count(*) As 'Tota

asp.net小孔子cms中的数据添加修改_实用技巧

题外话:我为什么研究小孔子的cms,从我自己写一个cms我就开始研究起别人的cms,早期我是研究netcms,但这系统过于庞大,看上去十分的累,也没那个精力,于是打算从一套比较小的开始研究,于是小孔子cms就进入了我的研究范围.没过多久我就放下我手中的cms,决定研究清楚有了更多经验再继续写完我没有完成的cms.        最近都在看小孔子cms的代码,其添加与修改数据十分方便,做下笔记,代码主要提取自小孔子cms,去掉了不用的函数并把相关代码写到一个文件中: 结合上面的图片,当我们要往数据