Записи с меткой «asp.net-mvc»

Реализация паттерна PRG в asp.net mvc

PRG —  post redirect get. Все POST параметры записываются в сессию, и делается редирект на GET. После чего параметры запроса восстанавливают из сессии. Это удобно когда имеются два метода один метод GET который представляет форму, а второй метод POST который сохраняет эти данные . И в случае ошибки делается редирект на форму с уже заполненными неправильными данными. …

Разрешим put и delete запросы (asp.net mvc)

При запуске приложения на боевом сервере возникает ошибка 405 Method Not Allowed using ASP.NET Web API. Исправим ее: Добавим такие строчки в web.config <system.webServer> <validation validateIntegratedModeConfiguration=»false» /> <modules runAllManagedModulesForAllRequests=»true»> <remove name=»WebDAVModule» /> </modules> <handlers> <remove name=»WebDAV» /> <remove name=»ExtensionlessUrlHandler-Integrated-4.0″ /> <add name=»ExtensionlessUrlHandler-Integrated-4.0″ path=»*.» verb=»GET,HEAD,POST,DEBUG,PUT» type=»System.Web.Handlers.TransferRequestHandler» resourceType=»Unspecified» requireAccess=»Script» preCondition=»integratedMode,runtimeVersionv4.0″ /> </handlers> </system.webServer>

Разрешим кросс-доменные запросы (asp.net mvc)

Для того чтобы разрешить кросс-доменные запросы нужно установить заголовок Access-Control-Allow-Origin. Установим заголовок Access-Control-Allow-Origin в web.config <configuration> <system.webServer> <httpProtocol> <customHeaders> <add name=»Access-Control-Allow-Origin» value=»*» /> <add name=»Access-Control-Allow-Headers» value=»Origin, X-Requested-With, Content-Type, Accept» /> </customHeaders> </httpProtocol> </system.webServer> </configuration> Или можно создать атрибут для mvc контроллеров public class AllowCrossSiteJsonAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.RequestContext.HttpContext.Response.AddHeader(«Access-Control-Allow-Origin», «*»); …

Разрешим читать статические файлы с определенным разрешением (asp.net)

Разрешим читать json файлы. Добавим в web.config следующие строчки: <system.webServer> <staticContent> <remove fileExtension=».json»/> <mimeMap fileExtension=».json» mimeType=»application/json» /> </staticContent> </system.webServer> Ссылки: http://stackoverflow.com/questions/22951046/404-not-found-when-i-look-for-json-file-in-asp-net-mvc-app http://www.iis.net/configreference/system.webserver/staticcontent/mimemap

Работаем с исходниками twitter bootstrap в visual studio

Скачиваем архив с исходниками bootstrap Создаем в проекте папку bootstrap Распаковываем архив и папки dist/fonts, dist/js и less переносим в свой проект в папку bootstrap. Переименовываем папку less в css. Скачиваем и устанавливаем Web Essentials в vs. После установки в настройках Web Essentials->Compile files on build ставим True. Открываем файл bootstrap.less и нажимаем ctrl+save. После должны …

Работа с логированием в asp.net

Посмотрим логи которые пишет iis сервер по умолчанию. Установим elmah и nlog логирования. Первый удобен тем что имеет веб интерфейс. Второй позволяет писать логи в текстовый файл, что удобно когда нужно исследовать участок кода более подробно. Логи по умолчанию расположены в c:\inetpub\logs\LogFiles\W3SVC{Id}. Id — это идишник сайта, его можно посмотреть в iis manager. Чтобы установить elmah …

Работа с картинками (.net, c#)

Загружаем картинку на сервер [HttpPost] public void UploadImage(HttpPostedFileBase file) { if (file == null) throw new Exception(«Не указан файл.»); if (!new string[] { «image/jpeg», «image/pjpeg», «image/png», «image/gif», «image/bmp» } .Any(x => x == file.ContentType.ToLower())) throw new Exception(«Файл не является изображением.»); System.Drawing.Image image = System.Drawing.Image.FromStream(file.InputStream); image.Save(«d:/Temp/Image.jpg», System.Drawing.Imaging.ImageFormat.Jpeg); } Сжимаем картинки public void ResizeImage(int size, string filePath, …

Привязывание к модели списка значений, разделенных запятыми (asp.net-mvc)

В прошлой заметке я описывал как передавать списки значений в контроллер. Теперь опишу как создать пользовательский привязчик к модели, который будет привязывать параметр  со значениями, разделенными запятыми, к списку значений в контроллере. Допустим есть такой контроллер public void GetFilters(List<int> filterIds) { } И мы хотим передать список значений таким образом /GetFilters?filterIds=1,2,3 Для этого создадим класс — привязчик …

Прикрепляем файлы к письму (.net, c#)

private void AttachFiles(MailMessage mail, string[] files) { foreach (string file in files) mail.Attachments.Add(new Attachment(file, GetMediaType(file))); } private string GetMediaType(string file) { string fileExt = Path.GetExtension(file).ToLower(); switch (fileExt) { case "pdf": return MediaTypeNames.Application.Pdf; case "rtf": return MediaTypeNames.Application.Rtf; case "zip": return MediaTypeNames.Application.Zip; case "gif": return MediaTypeNames.Image.Gif; case "jpeg": return MediaTypeNames.Image.Jpeg; case "jpg": return MediaTypeNames.Image.Jpeg; case "tiff": return …

Пользовательские ошибки в asp.net mvc

Стилизуем наши пользовательские ошибки: обработчики для mvc: <customErrors mode=»RemoteOnly» redirectMode=»ResponseRewrite» defaultRedirect=»~/500.aspx»> <error statusCode=»404″ redirect=»~/404.aspx»/> <error statusCode=»500″ redirect=»~/500.aspx»/> </customErrors> mode=»On» — включает для локального и боевого серверов, mode=»RemoteOnly» — только для боевого сервера; redirectMode=»ResponseRewrite» — нужно чтоб url не менялся Внимание:путь должен быть указан начиная с ~/ Внутри файла должен быть задан статус,  например статус 404 …