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

Создаем html при помощи RazorEngine без контроллеров mvc (asp.net-mvc)

Подключаем библиотеку RazorEngine при помощи менеджера пакетов nuget. Пишем метод который на вход принимает путь к представлению и модель, а на выходе отдает html строку public static class RenderViewHelper { public static string RenderPartialToString(string viewPath, object model) { string viewAbsolutePath = MapPath(viewPath); var viewSource = File.ReadAllText(viewAbsolutePath); string renderedText = Razor.Parse(viewSource, model); return renderedText; } public static …

Создаем excel документ (c#)

Есть много библиотек, с помощью которых можно создать excel документ. В данной заметке я опишу как использовать библиотеку Epplus. public static class ExcelUtils { public static DataTable ExcelToDataTable(string path) { // https://calmsen.ru/parsim-excel/ } private static void SetDefaultOptions(Dictionary<string, string> options) { if (!options.ContainsKey(«Worksheet.name»)) options[«Worksheet.Name»] = «Лист1»; if (!options.ContainsKey(«Worksheet.TabColor»)) options[«Worksheet.TabColor»] = «Blue»; if (!options.ContainsKey(«Worksheet.DefaultColWidth»)) options[«Worksheet.DefaultColWidth»] = «24»; …

Создаем базовый репозиторий

Для того чтобы контекст бд сохранялся из репозитория в репозиторий, можно сохранять данный контекст в HttpContext.Current.Items и получать его из этого контекста(HttpContext) когда необходимо. Создадим абстрактный базовый репозиторий, который будет содержать данную логику. Наш базовый репозиторий: public abstract class BaseRepository { public DefaultDatabase DbContext { get { return TLS.Get<DefaultDatabase>(«DbContext»); } } } Контекст базы данных создадим …

Собираем статические файлы в dll (asp.net mvc)

Для того, чтобы статические файлы можно было собрать в отдельную библиотеку, нужно у этих файлов поставить свойство «Build Action» в значение «Embedded Resource». После того как все файлы будут находится в отдельной сборке, нужно научить приложение доставать эти файлы из dll. Пусть все статические файлы находятся в папке Content. Например javacript файлы в папке /Content/JS, …

Скрываем публичные свойства, через которых происходит внедрение зависимостей ninject (c#)

Допустим есть свойство, через которое ninject внедряет зависимость [Inject] public IUsersService UsersService { get; set; } И очень хочется скрыть это свойство, так как данное свойство используется только внутри класса. Для этого делаем свойство защищенным или приватным [Inject] proteced virtual IUsersService UsersService { get; set; } И в Global.cs прописываем следующие строки var kernel = …

Реализация паттерна 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

Работаем с xml в c#

Используем класс XmlDocument для работы с xml документом Создаем xml документ из строки var xml = @»<Products xmlns:ons=’http://othernamespace’> <Product Id=’1′>1</Product> <ons:Product ons:Id=’2′>2</ons:Product> </Products>»; var doc = new XmlDocument(); doc.LoadXml(xml); Создаем xml документ из файла XmlDocument doc = new XmlDocument(); doc.Load(@»c:\path.xml»); Создаем xml документ с помощью методов XmlDocument doc = new XmlDocument(); // создаем корневой элемент XmlNode …