понеділок, 3 жовтня 2011 р.

середу, 21 вересня 2011 р.

неділю, 11 вересня 2011 р.

Настройка Tortoise

Есть много информации о настройке Mercurial для комфортной работы. Я просмотрел документацию и пока что настроил следующее:
Зачем нам в системе контроля версий файлы из obj, bin или зачем протоколировать изменение пакетов которые мы используем?

понеділок, 5 вересня 2011 р.

Загрузка и отображение картинок в ASP.NET MVC 3


Отображение:
   У нас есть сущность, для которой нужна картинка (company), у него есть свой id, по которому мы будем доставать из базы картинку.
 
   В контроллере Company создаем обработчик Image:
       public FileContentResult Image(int id)
        {
            Company c = Repository.Instance.Companies.Single(c => c.ID == id);
            if (client == null || client.Logo == null)
                return new FileContentResult(new byte[0], "image/gif");

            return new FileContentResult(client.Logo.ToArray(), "image/gif");
        }

Загрузка картинки:
@using (Html.BeginForm("Company_information", "Company", FormMethod.Post, new { id = "frmCompanyInformation", enctype = "multipart/form-data" }))
{
     //..  
}

Обработчик:
  public ActionResult CompanyInformation(CompanyInformationModel m, HttpPostedFileBase file)
        {
            if (ModelState.IsValid)
            {
                if (file != null && file.ContentLength > 0)
                {
                    MemoryStream ms = new MemoryStream();
                    file.InputStream.CopyTo(ms);
                    m.Info.Logo = ms.GetBuffer();
                }
                Repository.Instance.SaveCompanyInformation(
                    Repository.Instance.GetClient(Repository.Instance.GetUserID(User.Identity.Name)).ID, m);
            }
            return RedirectToAction("index");

        }

пʼятницю, 6 лютого 2009 р.

Статьи на других сайтах

Основными источниками информации для меня являются оф. сайт, и habr.
Хочу с вами поделиться интересными статьями:
MVC Framework: большое введение для начинающих / .NET / Хабрахабр
Использование консоли при отладке приложений ASP.NET / .NET / Хабрахабр

Туториал Первый - База данных фильмов

Создаем проект File -> New Project -> Visual C# -> Web -> ASP.NET MVC Web Application.
После выбора имени проекта и выбора папки для размещения оного, появится диалоговое окно, в котором мы отказываемся от любезного предложения сразу добавить Unit-тесты.
Теперь, в Solution Explorer`е в папке AppData создаем базу Movies.dbf
В ней таблицу:

Id Int False
Title Nvarchar(100) False
Director Nvarchar(100) False
DateReleased DateTime False
При чем id ставим уникальным ключем, identity specification - 1.
Потом вводим данные:
Внимание, картинки, как и сами туториалы взяты из оф. сайта, на будущее, так что all rights reserved (c) как говорят =)


Таак, это была т.н., подноготная нашей работы, сейчас приступаем к создание соббственно
МОДЕЛИ
отображения наших данных.
В моем вольном переводе это означает набор классов для отображения данных.
И тут, (я пишу блог в первую очередь для себя, и дальше таких пояснений делать не буду) YES! У меня наконец получилось добавить в папку с моделями проекта именно ADO.NET Entity Data Model, раньше когда у меня стояла студия без сервис пака, выбора такого типа данных для модели не было!
Что-то я увлекся =)
Клацаете правой кнопкой мышки на Models, Add New Item -> Data -> ADO.NET Entity Data Model. От английского первоначального туториала лучше не отходить даже в именовании файлов, так что сохраняем его так: MoviesDBModel.edmx
Жмем кнопку создать, проходим простой визард, ничего! не меняя от начальных настроек, попутно смотрим и внимательно читаем с чем мы соглашаемся, так, пригодится м.б. потом. У меня получилось

а у вас?

Вот и отлично, теперь перейдем к созданию Контроллера
Контроллер отвечает за взаимодействие пользователя и нашего приложения.
Приступим, если вы уже успели понажимать мышкой по каждой папке нашего проекта, подумать что они значат, зачем, и что внутри, то наверняка увидели в папке Controllers 2 файла, зачем они нам, пока сам не знаю, ясно только, что стандартные. Клацаем на папке правой кнопкой, Add -> Controller
Далее в туториале написано назвать его HomeController, тут-то мы попадаем впросак - такой файл имеется (
Я переименовал существующий файл в *.cs.bak, и уже в новом написал:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MovieApp.Controllers
{
  public class HomeController : Controller
  {
    //
    // GET: /Products/

    public ActionResult Index()
    {
      return View();
    }

    //
    // GET: /Products/Details/5

    public ActionResult Details(int id)
    {
      return View();
    }

    //
    // GET: /Products/Create

    public ActionResult Create()
    {
      return View();
    }

    //
    //POST: /Products/Create

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(FormCollection collection)
    {
      try
      {
        return RedirectToAction("Index");
      }
      catch
      {
        return View();
      }

    }

  }
}

* This source code was highlighted with Source Code Highlighter.


Немного пояснений. Index() - метод контроллера который вызывается при загрузке вашего приложения. Далее мы будем использовать этот метод для отображения данных, которые хранятся в таблице.
В листинге №2 я модифицирую класс контроллера что бы у него был новый конструктор, который создаст обьект класса MoviesDBEntities и привяжет к нему поле private _db, обьект MoviesDBEntities представляет нашу модель.

Я модифицирую метод Index(), который будет привязан к свойству ViewData.Model, ViewData пройдет от контроллера к отображению (View)
using MovieApp.Models;

namespace MovieApp.Controllers
{
  public class HomeController : Controller
  {
    private MoviesDBEntities _db;
    public HomeController()
    {
      _db = new MoviesDBEntities();
    }

    //
    // GET: /Products/
  public ActionResult Index()
  {
    ViewData.Model = _db.MovieSet.ToList();
    return View();
  }

* This source code was highlighted with Source Code Highlighter.

Теперь что бы не было ошибок, нужно переименовать в дизайнере класс Tasks на Movie, что в свою очередь сделает доступным _db.MovieSet.

четвер, 5 лютого 2009 р.

Пост Первый - Установка!

Итак, что бы можно было приступить к работе у Вас должно быть установлено:
VS 2008 SP1 - это важно, именно с обновлением (жмем кнопку Update в меню авторана диска со студией, у меня обновление прошло за 2 часа, скачал 600 Мб)

Сама ASP.NET MVC

Также может пригодится и MSDN 2008 SP1, опять таки - для студии.