1

を使用してASP.NET Web Forms/C#います。

この関数を使用してDropDownLists、State から選択した州に基づいてCity を埋めていますDropDownList。StateDropDownListsと City には 3 つあります (Residential、Native、Office)。

これが私の機能です。

public void CityFill(int index,int id)
{          
    var city = CustomerBLL.GetCities(index);

    //Loop through all the cities in st object
    foreach (var c in city)
    {
        //If id=0 then fill all dropdowns
        if (id == 0)
        {
            NewCustomerddlResidentialCity.Items.Add(c.city_name.Trim());
            NewCustomerddlOfficeCity.Items.Add(c.city_name.Trim());
            NewCustomerddlNativeCity.Items.Add(c.city_name.Trim());
            NewCustomerddlNomineeCity.Items.Add(c.city_name.Trim());
        }
        else
        {
            //If 1 then fill Res City
            if(id==1)
                NewCustomerddlResidentialCity.Items.Add(c.city_name.Trim());

            //If 2 then fill Off City
            if(id==2)
                NewCustomerddlOfficeCity.Items.Add(c.city_name.Trim());

            //If 3 then fill nat city
            if(id==3)
                NewCustomerddlNativeCity.Items.Add(c.city_name.Trim());
        }
    }
}

ID に基づくこの関数は、DropDownListsID 引数に基づいて適切な都市を埋めます。

これは現在 にあります。code behind私の質問は、この関数をここで使用する必要があるか、それとも自分の に移動する必要があるかBusiness Logic classです。これが私のCustomerBLL.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Drawing;
using System.Text.RegularExpressions;
using System.Data.SqlClient;
using System.Threading;
using System.Globalization;
using System.Web.Services;
using System.IO;
using System.Xml.Linq;
using System.Web.Security;
using System.Text;

namespace CwizBankApp
{
    public class CustomerBLL
    {
        public IList<mem_city> GetCities(int index)
        {
            using (var db = new DataClasses1DataContext())
            {
                var city = db.mem_cities.Where(c => c.state_id.Equals(index)).ToList();
                return city;
            }
        }
    }
}

適切なアプローチとは何ですか。誰かがこれについて私を案内できますか?

どんな提案でも大歓迎です。

4

2 に答える 2

3

適切なアプローチは、ドロップダウン リストとビジネス ロジックに個別に項目を追加することです。

// this goes to business logic
public CitiesView GetCities(int id) {
       var cities = new CitiesCollection();
       var city = CustomerBLL.GetCities(index);

        //Loop through all the cities in st object
        foreach (var c in city)
        {
            //If id=0 then fill all dropdowns
            if (id == 0)
            {
                cities.Residental.Add(c.city_name.Trim());
                cities.Office.Add(c.city_name.Trim());
                cities.Native.Add(c.city_name.Trim());
                cities.Nominee.Add(c.city_name.Trim());
            }
            else
            {
                //If 1 then fill Res City
                if(id==1)
                    cities.Residental.Add(c.city_name.Trim());

                //If 2 then fill Off City
                if(id==2)
                cities.Office.Add(c.city_name.Trim());

                //If 3 then fill nat city
                if(id==3)
                cities.Native.Add(c.city_name.Trim());
            }
        }
  }

  // this goes to code behind
  public void FillCitiesDrowDowns(int id) {
       var citiesView = GetCities(id);
       NewCustomerddlResidentialCity.Items.AddRange(citiesView.Residental);
       NewCustomerddlOfficeCity.Items.Add(citiesView.Office);
       NewCustomerddlNativeCity.Items.Add(citiesView.Native);
       NewCustomerddlNomineeCity.Items.Add(citiesView.Nominee);    
 }

 public class CitiesView {
     public List<string> Residental {get;set;}
     public List<string> Office {get;set;}
     public List<string> Native {get;set;}
     public List<string> Nominee {get;set;}
 }

そうすれば、UI 要素に触れることなくすべての条件をテストでき、ビジネス ロジックに触れることなく UI 要素を置き換えることができます。

于 2012-07-04T07:57:40.570 に答える
1

ビジネス ロジック層にある必要があります。その理由の 1 つは、この機能を他のフォームでも使用したいということです。つまり、それを呼び出すだけです。

BLL、ビジネス ドメインの一部であり、データベースの一部ではなく、UI の一部ではないものを処理します (通常)。たとえば、年齢を使用して、customerシニア特別割引の資格があるかどうかを判断します。DAL はこれを行うべきではありません。単に顧客データを取得し、BLL作業が完了した後に割引データと共に保存する必要があります。

  1. すべてのビジネス ロジックをローカライズし、1 か所にまとめます。その結果、将来の変更ははるかに簡単になります。
  2. これにより、ビジネス ロジックの単体テストをより簡単に行うことができます。これは大きなものです。このコードが Web ページまたは Windows フォームに密接に結合されている場合、ビジネス ロジックに対して自動化された単体テストを作成することは非常に困難です。
  3. UI をよりスリムに保ちます。
于 2012-07-04T07:56:13.813 に答える