zoukankan      html  css  js  c++  java
  • C/S中的MVC(1) 荣

    在C/S中,也可以实现一个类似的MVC模式。

    思路是这样的:用一个DataSet代替B/S中的HttpContext,用工厂模式写一个类来实现BN层与WEB层的对应。

    这样,是不是有点像MVC了。
    下面是代码:
    using System;
    using System.Data;

    using Business;

    namespace Business.Base
    {
     /// <summary>
     /// Description:窗体基类的公用函数类。
     ///              本类提供窗体基类所需要的一些方法,例如
     ///              写入,读取DataSet中的数据等
     /// </summary>
     public class FormCommonBN
     {
      /// <summary>
      /// 存储数据的DataSet表的名称。
      /// </summary>
      public const string DTNAME = "Meta";

      /// <summary>
      /// 当前窗体名称列。
      /// </summary>
      public const string FORMNAME = "FormName";

      /// <summary>
      /// Description:默认构造函数。
      /// </summary>
      private FormCommonBN()
      {
      }

      /// <summary>
      /// Description:从DataSet中取得DataTable。
      /// </summary>
      /// <param name="ds">存储数据的DataSet</param>
      /// <param name="key">列名称</param>
      /// <returns>DataTable</returns>
      public static DataTable GetDataTable(DataSet ds, string key)
      {
       if ((ds.Tables[DTNAME] == null)
        || ds.Tables[DTNAME].Rows.Count <= 0)
       {
        throw new Exception("没有您所需要的数据。");
       }
       return (DataTable)ds.Tables[FormCommonBN.DTNAME].Rows[0][key];
      }

      /// <summary>
      /// Description:从DataSet中取得值。
      /// </summary>
      /// <param name="ds">存储数据的DataSet</param>
      /// <param name="key">列名称</param>
      /// <returns>取得的值</returns>
      public static object GetData(DataSet ds, string key)
      {
       if ((ds.Tables[DTNAME] == null)
        || ds.Tables[DTNAME].Rows.Count <= 0)
       {
        throw new Exception("没有您所需要的数据。");
       }
       return ds.Tables[FormCommonBN.DTNAME].Rows[0][key];
      }

      /// <summary>
      /// Description:从DataSet中取得字符串。
      /// </summary>
      /// <param name="ds">存储数据的DataSet</param>
      /// <param name="key">列名称</param>
      /// <returns>取得的值</returns>
      public static string GetDataToString(DataSet ds, string key)
      {
       object obj = GetData(ds, key);
       if (obj == null)
       {
        return "";
       }
       else
       {
        return obj.ToString();
       }
      }

      /// <summary>
      /// Description:从DataSet中取得整数。
      /// </summary>
      /// <param name="ds">存储数据的DataSet</param>
      /// <param name="key">列名称</param>
      /// <returns>取得的值</returns>
      public static int GetDataToInt32(DataSet ds, string key)
      {
       object obj = GetData(ds, key);
       if (obj == null)
       {
        throw new Exception("程序中用到的某个参数没有赋值。");
       }

       return Convert.ToInt32(obj);
      }

      /// <summary>
      /// Dascription:设置DataSet中的DataTable。
      /// </summary>
      /// <param name="ds">存储数据的DataSet</param>
      /// <param name="dt">DataTable</param>
      /// <param name="key">列名称</param>
      public static void SetData(DataSet ds, DataTable dt, string key)
      {
       if ((ds.Tables[FormCommonBN.DTNAME] == null)
        || ds.Tables[DTNAME].Rows.Count <= 0)
       {
        throw new Exception("没有您所需要的数据。");
       }

       ds.Tables["Meta"].Rows[0][key] = dt;
      }

      /// <summary>
      /// Dascription:设置DataSet中的值。
      /// </summary>
      /// <param name="ds">存储数据的DataSet</param>
      /// <param name="Value">设置的值</param>
      /// <param name="key">列名称</param>
      public static void SetData(DataSet ds, object Value, string key)
      {
       if ((ds.Tables[FormCommonBN.DTNAME] == null)
        || ds.Tables[DTNAME].Rows.Count <= 0)
       {
        throw new Exception("没有您所需要的数据。");
       }

       ds.Tables["Meta"].Rows[0][key] = Value;
      }
     }
    }

  • 相关阅读:
    【xinsir】githook之precommit分享
    node进程一些信号的意义
    ES6篇
    Webpack4篇
    Node篇
    Vuex篇
    WebStorage篇
    HTML5篇
    html5语义化标签大全
    emmet语法
  • 原文地址:https://www.cnblogs.com/admin11/p/213590.html
Copyright © 2011-2022 走看看