做一個思想的碼農

来源:http://www.cnblogs.com/rocky987/archive/2016/01/22/5151693.html
-Advertisement-
Play Games

這段時間一直在做公司的項目,突然間有這麼一個想法,其實邏輯方便的還好,可是當我們想把前臺控制項的值賦給對象時,或者是對象的值賦值給前臺控制項。我們每天都做著相同的事情,這著實是一個讓人鬱悶的事情。沒有辦法,我們每天的工作無外乎就是Ctrl+C,然後Ctrl+V最後把ID什麼的改改,有用的用,沒有用的.....


      這段時間一直在做公司的項目,突然間有這麼一個想法,其實邏輯方便的還好,可是當我們想把前臺控制項的值賦給對象時,或者是對象的值賦值給前臺控制項。我們每天都做著相同的事情,這著實是一個讓人鬱悶的事情。沒有辦法,我們每天的工作無外乎就是Ctrl+C,然後Ctrl+V最後把ID什麼的改改,有用的用,沒有用的刪除,然後在創建一個新的。突然發現我們實實在在的就是一個碼農,和那些工地上搬磚的哥們們沒有什麼區別,無外乎就是他們用的是體力,我們只要細心點用用鍵盤就OK。好了說了這麼多都是廢話,那麼我就直接上代碼了,接招............

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestWeb._Default" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml" >
 6 <head runat="server">
 7     <title>測試</title>
 8 </head>
 9 <body>
10     <form id="form1" runat="server">
11     <div>
12     <input id="hlName" runat="server" value="1" />
13     <asp:TextBox ID="hlCode" runat="server" Text="12"></asp:TextBox>
14     </div>
15     </form>
16 </body>
17 </html>
前臺代碼 那麼我們先建一個對象,直接上代碼!
 1 using System;
 2 using System.Data;
 3 using System.Configuration;
 4 using System.Linq;
 5 using System.Web;
 6 using System.Web.Security;
 7 using System.Web.UI;
 8 using System.Web.UI.HtmlControls;
 9 using System.Web.UI.WebControls;
10 using System.Web.UI.WebControls.WebParts;
11 using System.Xml.Linq;
12 
13 namespace TestWeb
14 {
15     public class Person
16     {
17         private string _Name;
18         /// <summary>
19         /// 名稱
20         /// </summary>
21         public string Name
22         {
23             get { return _Name; }
24             set { _Name = value; }
25         }
26         private string _Code;
27         /// <summary>
28         /// 編碼
29         /// </summary>
30         public string Code
31         {
32             get { return _Code; }
33             set { _Code = value; }
34         }
35     }
36 }
對象 這時我們看看以前的做法是什麼,雖然這種方法我用了很多次,但是這個時候我突然發現有一種想吐的衝動。如果這個對象我們有幾十個屬性,那麼這是會不會死人?我想會的!
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace TestWeb
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Person per = new Person();
            per.Name = "張三";
            per.Code = "434121312312";
            hlCode = per.Code;
            hlName = per.Name;
        }
    }
}
最原始的方法 是不是感覺很爽?不用管你前臺頁面到底有多少的控制項,來者不懼懼者不來!
 1 using System;
 2 using System.Collections;
 3 using System.Configuration;
 4 using System.Data;
 5 using System.Linq;
 6 using System.Web;
 7 using System.Web.Security;
 8 using System.Web.UI;
 9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13 using System.Reflection;
14 
15 namespace TestWeb
16 {
17     public partial class _Default : System.Web.UI.Page
18     {
19         protected void Page_Load(object sender, EventArgs e)
20         {
21             Fill(this);
22         }
23         /// <summary>
24         /// 填充控制項
25         /// </summary>
26         /// <param name="page"></param>
27         public void Fill(System.Web.UI.Page page)
28         {
29             Person per = new Person();
30             per.Name = "張三";
31             per.Code = "434121312312";
32             var type = per.GetType().GetProperties();
33             foreach (PropertyInfo item in type)
34             {
35                 var s1 = page.FindControl("hl" + item.Name);
36                 if (s1 != null)
37                 {
38                     TextBox t = (TextBox)s1;
39                     t.Text = item.GetValue(per, null).ToString();
40                 }
41             }
42 
43         }
44     }
45 }
新的方法

    

那麼我們用同樣的道理來看看,我們前臺賦值了,怎麼去給對應的對象上賦值呢?其實這個也很簡單。同樣我們也對比一下以前的方法和現在的方法到底有什麼區別。首先我們來看看以前的代碼
 1 using System;
 2 using System.Collections;
 3 using System.Configuration;
 4 using System.Data;
 5 using System.Linq;
 6 using System.Web;
 7 using System.Web.Security;
 8 using System.Web.UI;
 9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13 using System.Reflection;
14 
15 namespace TestWeb
16 {
17     public partial class _Default : System.Web.UI.Page
18     {
19         protected void Page_Load(object sender, EventArgs e)
20         {
21             Person per = new Person();
22             per.Name = hlName.Text;
23             per.Code = hlCode.Text;
24         } 
25     }
26 }
以前的工作代碼    現在我們再來看看我們新的方法,廢話不多說直接上代碼。
 1 using System;
 2 using System.Collections;
 3 using System.Configuration;
 4 using System.Data;
 5 using System.Linq;
 6 using System.Web;
 7 using System.Web.Security;
 8 using System.Web.UI;
 9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13 using System.Reflection;
14 
15 namespace TestWeb
16 {
17     public partial class _Default : System.Web.UI.Page
18     {
19         protected void Page_Load(object sender, EventArgs e)
20         {
21             Full(this);
22         }
23 
24         public void Full(System.Web.UI.Page page)
25         {
26             Person per = new Person();
27             var type = per.GetType().GetProperties();
28             foreach (PropertyInfo item in type)
29             {
30                 var s1 = page.FindControl("hl" + item.Name);
31                 if (s1 != null)
32                 {
33                     TextBox t = (TextBox)s1;
34                     item.SetValue(per,t.Text, null);
35                 }
36             }
37         }
38     }
39 }
自動為對象賦值的方法

     今天先就寫這麼多,希望能對大家有點用處!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • https://ajaxcontroltoolkit.codeplex.com/警告 7 未能找到引用的組件“Antlr3.Runtime”。 警告 6 未能找到引用的組件“HtmlAgilityPack”。 警告 10 未能找到引用的組件“HtmlAgilityPack”。 警告 1 未能找到引用...
  • 10-9. 在多對多關係中為插入和刪除使用存儲過程問題想要在一個無載荷的多對多關係中使用存儲過程(存儲過程隻影響關係的連接表)解決方案假設有一個多對多關係的作者( Author)表和書籍( Book)表. 用連接表AuthorBook來做多對多關係,如 Figure 10-11.所示:Figure ...
  • 第一章 初識Windows程式01.淺談控制台應用 解析:控制台應用程式:dos視窗中顯示 Windows窗體應用程式:有控制項參與的,支持事件的一種程式02.關於窗體項目的註意點: /*01.一個解決方案下可以包含多個項目, * 一個項目下可以包含多個窗體 * 02.如何設置一個項目下的某個窗體為啟...
  • ADO.NET操作使用ADO.NET的方式操作資料庫時,對於經常需要操作不同資料庫的同學,需要對不同的資料庫翻來覆去地寫操作類。<br 對ADO.NET,操作資料庫需要有幾個核心的東西(以MySql為例): MySqlConnection 負責mysql的連接,在操作mysql前,需要先獲得連接.....
  • 前臺管理主界面:主要代碼: 1 2 private void MainForm_Load(object sender, EventArgs e) 3 { 4 // 載入時,運行播放窗體 5 FrmPlay play...
  • 10-8. 映射插入、修改、刪除操作到存儲過程問題想要映射插入、修改、刪除操作到存儲過程解決方案假設已有運動員實體模型,如Figure 10-8所示. 對應的資料庫表如Figure 10-9所示. 我們想要用存儲過程來執行插入,修改,刪除操作。Figure 10-8. 運動員實體模型Figure 1...
  • 前言 貌似最近來問我XAML這塊的東西的人挺多的。有時候看他們寫XAML這塊覺著也挺吃力的,所謂基礎不牢,地動山搖。XAML這塊雖說和HTML一樣屬於標記語言,但是世界觀相對更加龐大一點。 今天講講XAML中的Binding。沒啥技術含量,全當是快速閱讀。 Binding作為MVVM模式的一個...
  • EF資料庫初始化策略及種子數據的添加 CreateDatabaseIfNotExists 判斷當前資料庫連接字元串對應的資料庫是否存在,若不存在則根據代碼定義的model進行創建 DropCreateDatabaseIfModelChanges 如果代碼定義的model發生變化則刪掉重建 Dro.....
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...