Записи с тегом «WebForms»

Ошибка Validation of viewstate MAC failed (Проверка состояние вида MAC не удалась) или 404 во время PostBack при использовании HTML-тега base

14.06.2010 16:19 / Артём Волк / 1169 просмотров / ...

Проблема возникает, если для страниц сайта на ASP.NET Web Forms определён тег <base />, например, следующим образом:

<base href="http://example.com" />

Страницы, находящиеся на том же уровне, что и URL в теге <base /> будут работать нормально (например, такая страница: http://example.com/SomePage.aspx), но стоит попытаться использовать ещё одну страницу с тем же именем в подпапке, например, http://example.com/Folder/SomePage.aspx и при первом PostBack'e возникнет ошибка «Validation of viewstate MAC failed (Проверка состояние вида MAC не удалась)». В случае, если на сайте существует только одна страница с таким именем, т.е. или http://example.com/Folder/SomePage.aspx, или http://example.com/SomePage.aspx ошибка будет уже стандартной HTTP-ошибкой 404.

Причина ошибки в том, что тег <form> будет сформируется следующим образом:

<form name="aspnetForm" method="post" action="SomePage.aspx" id="aspnetForm">

Из-за тега <base /> результирующий URL для отправки формы будет неверным: http://example.com/SomePage.aspx, где часть http://example.com/ берется из тега <base />, а SomePage.aspx из атрибута action формы.

Способ исправления этой ошибки аналогичен решению проблемы с PostBack'ом при использовании URL Rewriting'а.

Перенос кода Global.asax в папку App_Code

14.02.2010 23:37 / Артём Волк / 964 просмотра / ...

При использовании модели ASP.NET приложения Web Site Project удобно хранить весь C#-код (кроме code-behind) в папке App_Code. Генерируемый же по умолчанию файл Global.asax помещается в корень сайта и содержит C# код.

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

Несколько форм на странице в WebForms и клавиша Enter

17.11.2009 12:40 / Артём Волк / 1068 просмотров / ...

Одно из ограничений WebForms — вся страница заворачивается в один тег <form>. В том случае, если на странице располагается несколько логических «форм», например, форма логина и небольшая форма поиска, которая есть на всех страницах, нажатие клавиши Enter в поле поиска может не приводить к срабатыванию правильного обработчика на серверной стороне.

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

Шаблоны e-mail сообщений в ASP.NET

16.11.2009 17:19 / Артём Волк / 1036 просмотров / ...

Задача подготовки е-мейл сообщений на основе шаблонов в ASP.NET оказывается нетривиальной. Среди вариантов решения: использование стороннего шаблонизатора, использование XSLT. Но, если ASP.NET — тоже шаблонизатор, пусть и весьма специфический, почему бы не поручить работу по подготовке е-мейлов ему?

ещё один вариант...

SEF-адреса в ASP.NET 2.0 WebForms на IIS6: полное решение (работающий postback, ASP.NET AJAX)

01.11.2009 23:36 / Артём Волк / 4751 просмотр / ...

Задача реализации «красивых» URL (вида /catalog/notebooks/asus/) в ASP.NET 2.0 приложении, работающем на IIS6 требует нескольких дополнительных действий.

полное решение.

Элементы шаблонов в ASP.NET WebForms, нетривиальный data binding

01.11.2009 12:35 / Артём Волк / 3806 просмотров / ...

WebForms задумывался для создания кода, обрабатывающего события пользовательского интерфейса, однако в некоторых случаях бывает необходимо отойти от этой парадигмы и использовать кодовые вставки <%...%> в .aspx-файлах почти в стиле ASP.NET MVC.

Встроенные компоненты, использущие т.н. data binding тоже иногда заставляют задуматься :)

куча примеров

Рекурсивный поиск контролов в ASP.NET WebForms без рекурсии

01.11.2009 11:26 / Артём Волк / 822 просмотра / ...
public static Control FindControlRecursively(Control root, string id)
{
	Stack<Control> stack = new Stack<Control>();
	stack.Push(root);

	while (stack.Count > 0)
	{
		Control current = stack.Pop();
		if (current.ID == id)
		{
			return current;
		}

		foreach (Control control in current.Controls)
		{
			stack.Push(control);
		}
	}		
	return null;
}

ASP.NET WebForms + JavaScript-фреймворки

27.10.2009 18:08 / Артём Волк / 1530 просмотров / ...

Одной из особенностей WebForms является то, что атрибуты id элементов, являющихся серверными контролами генерируются на сервере, а в случае, если к серверным контролам нужно применить клиентские скрипты, как, например, маски для полей ввода дат необходимо предпринять некоторые дополнительные действия, чтобы всё заработало.

полный пример

Отключение валидации данных HTTP-запроса в ASP.NET WebForms и ASP.NET MVC

25.10.2009 16:35 / Артём Волк / 1987 просмотров / ...

По умолчанию все данные HTTP-запроса подвергаются проверке на наличие потенциально небезопасных данных (клиентских скриптов, HTML-разметки и т.п.), в случае обнаружения подобных данных выбрасывается исключение, например такого вида:

A potentially dangerous Request.QueryString value was detected from the client....

или

A potentially dangerous Request.Form value was detected from the client....

решение проблемы...