Как достигнуть пользовательского элемента управления по функции Data Annotation Validation в использовании ASP.NET MVC 2 LinqToSQL?

Способ отправить приглашение на встречу в Outlook (и иметь распознанный) идет как это:

  • готовят iCalendar файл, убедиться установить эти дополнительные свойства, поскольку Outlook нужны они:
  • готовятся multipart/alternative почта:
    • Часть 1: text/html (или независимо от того, что Вам нравится) - это отображено "обычным" почтовым читателям или как нейтрализация и содержит сводку события в человекочитаемой форме
    • Часть 2: text/calendar; method=REQUEST, содержит содержание ics файла (заголовок method, параметр должен соответствовать методу в ics). Не упустите кодирование правильного текста, объявив charset, параметр заголовка не причинит боль.
    • Часть 3: Дополнительно, присоедините сам .ics файл, таким образом, обычные почтовые читатели могут предложить пользователю что-то для нажатия. Outlook действительно не требует вложения, потому что это просто читает text/calendar часть.
  • Отправляют почту пользователю Outlook. Если Вы добрались, все исправляется, почта обнаруживается как приглашение на встречу, вместе с кнопками присутствия и автоматической записью в пользовательском календаре на принимают.
  • Настроенный что-то, что обрабатывает ответы (они переходят к встречающемуся организатору). Я еще не был в состоянии заставить автоматического посетителя, отслеживающего работать с почтовым ящиком Exchange, потому что событие не будет существовать в календаре организаторов. Outlook нужны UIDs и ПОСЛЕДОВАТЕЛЬНОСТИ для соответствия, это - ожидания, но с UID Вы составили, это будет едва работать.

Для справки на деталях и особенностях ics формата файла, обязательно посетить iCalendar Выборки Спецификации Masahide Kanzaki. Они - свет в темноте, намного лучше, чем прогрызание Вашего пути до [1 117] RFC 2445 . Но с другой стороны, возможно, удобная библиотека существует для.NET.

5
задан phwd 22 August 2011 в 01:02
поделиться

4 ответа

У всех свое мнение, но я из тех, кто идет вперед и редактирует сгенерированные файлы. Если я могу добавить частичный класс, я это сделаю, но в подобных случаях я бы пошел дальше и отредактировал свойство в сгенерированном файле.

Многие сгенерированные файлы следует рассматривать как основу, которая принадлежит вам, когда генератор выплюнет это из. Если вы начнете думать об этом таким образом, некоторые вещи могут стать намного проще. Между прочим, я не стал бы защищать этот подход для файла, который будет часто регенерироваться, поскольку это вызовет гораздо больше головной боли.

2
ответ дан 14 December 2019 в 04:44
поделиться

Спасибо, что поделились своей точкой зрения по этому поводу. Я подумал об этом, но не уверен, хочу ли я этого.

Решение, которое я придумал сам, заключалось в том, чтобы сделать все мои сгенерированные объекты абстрактными, а все мои свойства виртуальными, назвав их, например, «DBCustomer», и создать унаследованный от класса «Клиент». Затем переопределите все свойства и вызовите base.PropertyName в геттерах и сеттерах. Что вы думаете об этом?

0
ответ дан 14 December 2019 в 04:44
поделиться

Я столкнулся с этой проблемой с MVC V1 и xVal. В итоге я использовал «приятельские классы», как подробно описано здесь Schotime (кеш Google, так как у него проблемы с веб-сайтом).

Он отлично работает для меня, но я не знаком с методом MVC v2 для этого чтобы знать, будут ли его подпрограммы «собирать» метаданные в ваших классах друзей.

Трудно спорить с кем-то, кто начинает со слов «у всех разные мнения», но мне бы не хотелось изменять сгенерированные файлы для LINQ . Я вижу смысл в каркасе, но когда я нахожусь в разработке, я вношу так много изменений в свою базу данных (и отношения), что я часто отбрасываю класс и воссоздаю его, перетаскивая таблицу обратно. Иногда я удаляю все классы и перетаскиваю всю базу данных. С другой стороны,

3
ответ дан 14 December 2019 в 04:44
поделиться

если я использую LinqToSQL для создания класса, я всегда создаю облегченную версию контейнера данных с постфиксом Data. Затем я использую этот класс для передачи данных на / от клиента / сервера.

Возможно, я не могу описать это идеально, но я считаю, что это довольно распространенная практика.

Скажем, LinqToSql дает вам класс Car с идентификатором int, int дверями, цветом строки и колесами int на основе таблицы Cars. Я бы создал

public class CarData
{
    [Required(ErrorMessage = "ID is Required")]
    public int id { get; set; }

    [Required(ErrorMessage = "doors are Required")]
    public int doors { get; set; }

    [Required(ErrorMessage = "color is Required")]
    public string color { get; set; }

    [Required(ErrorMessage = "wheels are Required")]
    public int wheels { get; set; }
}

. Вы даже можете использовать linq для выбора нового из них с помощью

var myCar = 
     from c in MyDataContext.Cars 
     where c.id == 1 
     select new CarData()
     { 
          id = c.id, 
          doors = c.doors, 
          color = c.color, 
          wheels = c.wheels 
     };

. С этим вы даже сохраните функцию отложенного выполнения linq to sql . В любом случае, вы должны добавить эти атрибуты в этот класс «Data» (как показано), чтобы получить специализированный легкий класс, который легко сериализуется и имеет все необходимые атрибуты проверки.

3
ответ дан 14 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: