Записи с тегом «ASP.NET»

Сборка и публикация ASP.NET MVC проекта из командной строки

05.02.2012 11:19 / Артём Волк / 66 просмотров / ...

В случае простых сценариев автоматической подготовки ASP.NET MVC проекта к публикации может быть достаточно обычного .bat-файла. Для компиляции, сохранения результата в отдельную папку и применения преобразований Web.config с сохранением вывода в лог достаточно следующих команд:

rem 
rem Настройки
rem 
set PROJECT_PATH=.\MyProject.sln
set CONFIGURATION=Release	
set EXPORT_DIR=C:\_MyProject-Deploy
set LOG_FILE=c:\MyProject-Deploy.log

rem
rem Сборка и публикация
rem 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe ^
%PROJECT_PATH% ^
/p:Configuration=%CONFIGURATION% ^
/p:DeployOnBuild=True ^
/p:DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder ^
/p:_PackageTempDir=%EXPORT_DIR% ^
/p:AutoParameterizationWebConfigConnectionStrings=False ^
/l:FileLogger,Microsoft.Build.Engine;logfile=%LOG_FILE%

Для удобства изменяемые параметры вынесены в переменные, а длинные команды разбиты на строки с помощью символа ^.

Диалог Publish в Visual Studio выполняет эти же действия, но его нельзя вызвать из командной строки.

Значение по умолчанию для select'а в ASP.NET MVC

29.07.2011 17:34 / Артём Волк / 436 просмотров / ...

Иногда возникает необходимость добавить в выпадающий список (<select />) ещё один пункт с пустым атрибутом value и примерно таким текстом: «выберите, пожалуйста, значение». Обычно такой пункт размещается в выпадающем списке первым. Специально для этого случая существуют специальные версии методов Html.DropDownList() и Html.DropDownListFor(), которые позволяют указать текст этого <option>'а следующим образом:

<%: Html.DropDownListFor(m => m.MyModelField, Model.ListOfOptions, "— не выбрано") %>

Универсальный пейджер для ASP.NET MVC

11.07.2011 21:29 / Артём Волк / 665 просмотров / ...

Практически в каждом веб-проекте необходим т.н. пейджер — элемент интерфейса, с помощью обеспечивается навигация по страницам списка каких-либо элементов. Для подобной функциональности, которая повторяется из проекта в проект, удобно сделать более-менее универсальное решение. Наша реализация должна была удовлетворять таким требованиям:

  • Нумерация страниц с единицы
  • HTML-код пейджера в виде Partial View
  • Отсутствие привязки к какому либо конкретному способу передачи номера текущей страницы в URL и к правилам роутинга
  • Возможность использования пейджера с любым источником данных (LINQ2SQL-запрос, ADO.NET-запрос и т.п.), т.е. возможность реализации собственного алгоритма выборки страницы данных

Итогом решения будет набор из ViewModel-классов и View-файлов в двух вариантах: WebForms View Engine и Razor.

Интересно, реально ли оформить решения в виде пакета NuGet?

читать дальше...

Указание неймспейсов для view-файлов ASP.NET MVC в формате Razor

11.06.2011 12:07 / Артём Волк / 737 просмотров / ...

В приложениях на Web Forms и на ASP.NET MVC с использованием view в формате .aspx можно было указать нужные неймспейсы, которые будут доступны в шаблонах с помощью такой конструкции в Web.config:

<pages>
	<namespaces>
		...
		<add namespace="Snippets.Helpers"/>
		<add namespace="Snippets.Models.ViewModel"/>
		...
		</namespaces>
</pages>

Для Razor'а используется другая процедура компиляции шаблонов, поэтому эти параметры на него не влияют.

решение...

Specified-поля в SOAP веб-сервисах

27.05.2011 16:52 / Артём Волк / 443 просмотра / ...

В уже упоминавшемся ASP.NET-приложении, которое использует сторонний SOAP-веб сервис, для генерации proxy-классов использует механизм, доступный из Visual Studio как «Add Web Reference». После обновления до Visual Studio 2010 SP1 для элементов, объявленных в WSDL с аттрибутом minOccurs="0" с типом, отличным от type="xsd:string", например, так:

<xsd:element minOccurs="0" name="MyField" type="xsd:boolean" />

В proxy-классах генерировалось дополнительное свойство bool MyFieldSpecified. Если не поставить его в true перед вызовом веб-сервиса, поле не будет включено в SOAP-запрос. В моём случае изменить веб-сервис не было возможности (он сторонний), а все поля в вызове сервиса на самом деле обязательные. Найденные существующие решения либо требовали дополнительной обработки кода proxy-классов, либо ручного заполнения свойств или не подходили в моей ситуации.

решение...

Вставка кода счётчиков по условию в ASP.NET MVC

18.04.2011 12:26 / Артём Волк / 508 просмотров / ...

Для того, чтобы код счётчиков не мешал разработке на локальной машине удобно вставлять его во view с помощью такой проверки (при условии, что на «живой» версии приложения установлен параметр <compilation debug="false" /> как это и должно быть):

<% if (!HttpContext.Current.IsDebuggingEnabled) { %>

	<!-- Google Analytics code -->
	<script type="text/javascript">
		// ...
	</script>
	<!-- /Google Analytics code -->

<% } %>

Скорее всего, можно использовать и проверку по свойству HttpRequest.IsLocal.

Extension-методы для DataRow и DataTable

04.03.2011 20:21 / Артём Волк / 504 просмотра / ...

Долгое время использовал такую конструкцию если нужно было получить данные из нетипизированного DataRow:

var temp = Convert.ToInt32(row["SomeField"]);

В случае, когда нужно было обработать nullable-поля, то использовался вот такой метод:

/*
 * Taken from: http://stackoverflow.com/questions/209160/nullable-type-as-a-generic-parameter-possible
 */
public static Nullable<T> GetValueOrNull<T>(DataRow row, string key) where T : struct
{
	object columnValue = row[key];

	if (!(columnValue is DBNull))
		return (T)columnValue;

	return null;
}

...

int? temp = GetValueOrNull<int>(row, "SomeField");

Оказалось, что есть более простой способ с использованием extension-метода Field<>():

int temp = row.Field<int>("SomeField");

Для класса DataTable есть свой набор полезных расширений

Ошибка "The full-text query parameter for Fulltext Query String is not valid" после обновления на .NET 4.0

20.02.2011 20:34 / Артём Волк / 563 просмотра / ...

После обновления до ASP.NET 4.0 реализация полнотекстового поиска с LINQ2SQL, описанная в сниппете более чем годичной давности перестала работать со следующей ошибкой: The full-text query parameter for Fulltext Query String is not valid.

читать дальше...

Валидация запроса в ASP.NET 4.0

06.02.2011 0:05 / Артём Волк / 740 просмотров / ...

В ASP.NET 4.0 одно из изменений со статусом «breaking change» приводит к тому, что ошибки валидации появляются для проектов на ASP.NET MVC на action'ах с атрибутом [AllowHtml] и даже для проектов на Web Forms с такой директивой в Web.config:

<pages validateRequest="false">

Решение проблемы следующее: необходимо добавить в Web.config в секцию <system.web />:

<httpRuntime requestValidationMode="2.0"/>

После указания этого параметра для проектов на Web Forms как и раньше можно управлять валидацией с помощью директивы <pages validateRequest="false"> в Web.config или избирательно отключать валидацию на уровне aspx-страницы.

Для ASP.NET MVC управление валидацией запроса можно осуществлять с помощью атрибутов [ValidateInput] и [AllowHtml]

В уже упомянутом посте говорится, что для ASP.NET MVC 3 этот параметр устанавливать необязательно.

ASP.NET 4.0 на IIS6

05.02.2011 23:51 / Артём Волк / 549 просмотров / ...

Для того, чтобы запустить ASP.NET 4.0 на IIS6 нужно предпринять несколько не совсем очевидных действий.


Страница 1 из 5