Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2015, 17:36   #1
shtandra
Пользователь
 
Регистрация: 06.01.2015
Сообщений: 12
По умолчанию Поиск

Доброго времени суток.
Как мне написать программу чтобы не создавать класса Accessor, а сделать все его обязаности исполнялись в HomeController.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SearchPanelDemo.DAL;
using SearchPanelDemo.Models;
using System.Web.Helpers;
using System.Web.WebPages;
 
namespace SearchPanelDemo.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        public ActionResult Index(string zipfilter, string cityfilter, string statefilter,
            string latitudefilter, string longitudefilter)
        {
            ViewBag.Title = "US Postal Codes";
            List<PostalCodeModel> viewModel = Accessor.FetchPostalCodes().ToList();
 
            if (!string.IsNullOrWhiteSpace(zipfilter))
                viewModel = viewModel.Where(p => p.ZipCode.StartsWith(zipfilter)).ToList();
 
            if (!string.IsNullOrWhiteSpace(cityfilter))
                viewModel = viewModel.Where(p => p.City.ToUpper().StartsWith(cityfilter.ToUpper())).ToList();
 
            if (!string.IsNullOrWhiteSpace(statefilter))
                viewModel = viewModel.Where(p => p.State.ToUpper().StartsWith(statefilter.ToUpper())).ToList();
 
            if (!string.IsNullOrWhiteSpace(latitudefilter))
                viewModel = viewModel.Where(p => p.Latitude.Contains(latitudefilter)).ToList();
 
            if (!string.IsNullOrWhiteSpace(longitudefilter))
                viewModel = viewModel.Where(p => p.Longitude.Contains(longitudefilter)).ToList();
 
            return View(viewModel);
        }
 
    }
}
Вот код код класса Accessor
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SearchPanelDemo.Models;

namespace SearchPanelDemo.DAL
{
    public class Accessor
    {
        public static IEnumerable<PostalCodeModel> FetchPostalCodes()
        {
            PostalCodesEntities context = new PostalCodesEntities();

            return (from a in context.ZIP_Codes join b in context.States on a.State_Code 
                    equals b.State_Code orderby b.State_Code ascending, a.City, a.ZIP_Code1 ascending select new PostalCodeModel
                    {
                          ZipCode = a.ZIP_Code1,
                          City = a.City,
                          State = b.State_Abbreviation,
                          Latitude = a.Latitude,
                          Longitude = a.Longitude
                    }).ToList<PostalCodeModel>();

        }
    }
}

Последний раз редактировалось Stilet; 06.01.2015 в 17:58.
shtandra вне форума Ответить с цитированием
Старый 06.01.2015, 18:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
            
 List<PostalCodeModel> viewModel = 
from a in context.ZIP_Codes join b in context.States on a.State_Code 
                    equals b.State_Code orderby b.State_Code ascending, a.City, a.ZIP_Code1 ascending select new PostalCodeModel
                    {
                          ZipCode = a.ZIP_Code1,
                          City = a.City,
                          State = b.State_Abbreviation,
                          Latitude = a.Latitude,
                          Longitude = a.Longitude
                    }).ToList<PostalCodeModel>()
Не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2015, 20:51   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Ну, а что мешает просто выдрать метод из класса аксессора и вставить в класс контроллера, вызов соответственно укоротиться на "Accessor." и вообще весь класс аксессора не понадобится.
А класс нужен для простого разделения ответственности (хоть и несёт всего лишь 1 статический публичный метод) - т.к. не контроллер суть "носитель"/контейнер данных.
phomm вне форума Ответить с цитированием
Старый 18.01.2015, 15:12   #4
despercool
Новичок
Джуниор
 
Регистрация: 18.01.2015
Сообщений: 3
По умолчанию

Типо так наверно...
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SearchPanelDemo.DAL;
using SearchPanelDemo.Models;
using System.Web.Helpers;
using System.Web.WebPages;
 
namespace SearchPanelDemo.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        public ActionResult Index(string zipfilter, string cityfilter, string statefilter,
            string latitudefilter, string longitudefilter)
        {
            ViewBag.Title = "US Postal Codes";
            List<PostalCodeModel> viewModel = FetchPostalCodes().ToList();
 
            if (!string.IsNullOrWhiteSpace(zipfilter))
                viewModel = viewModel.Where(p => p.ZipCode.StartsWith(zipfilter)).ToList();
 
            if (!string.IsNullOrWhiteSpace(cityfilter))
                viewModel = viewModel.Where(p => p.City.ToUpper().StartsWith(cityfilter.ToUpper())).ToList();
 
            if (!string.IsNullOrWhiteSpace(statefilter))
                viewModel = viewModel.Where(p => p.State.ToUpper().StartsWith(statefilter.ToUpper())).ToList();
 
            if (!string.IsNullOrWhiteSpace(latitudefilter))
                viewModel = viewModel.Where(p => p.Latitude.Contains(latitudefilter)).ToList();
 
            if (!string.IsNullOrWhiteSpace(longitudefilter))
                viewModel = viewModel.Where(p => p.Longitude.Contains(longitudefilter)).ToList();
 
            return View(viewModel);
        }

        public static IEnumerable<PostalCodeModel> FetchPostalCodes()
        {
            PostalCodesEntities context = new PostalCodesEntities();

            return (from a in context.ZIP_Codes join b in context.States on a.State_Code 
                    equals b.State_Code orderby b.State_Code ascending, a.City, a.ZIP_Code1 ascending select new PostalCodeModel
                    {
                          ZipCode = a.ZIP_Code1,
                          City = a.City,
                          State = b.State_Abbreviation,
                          Latitude = a.Latitude,
                          Longitude = a.Longitude
                    }).ToList<PostalCodeModel>();

        } 

    }
}
despercool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь в доработке программы на языке паскаль (бинарный поиск, поиск перебором) DimzNOVIchok45 Помощь студентам 0 13.10.2014 20:11
Реализовать два метода поиска строк в массиве: поиск перебором, бинарный поиск на языке Pascal DimzNOVIchok45 Помощь студентам 7 19.09.2014 21:40
Обработка одномерного массива - поиск среднего, поиск минимального, сортировка (Паскаль) nadez Паскаль, Turbo Pascal, PascalABC.NET 3 18.03.2014 08:45
Поиск на Си majuw Помощь студентам 6 05.05.2013 23:00
поиск по БД DJ DIMON PHP 6 31.03.2011 17:02