Как узнать ID контрола, вызвавшего постбек страницы?

by DenizK 20. августа 2010 05:48
 Page.Request.Params["__EVENTTARGET"]

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | Tips & tricks

Ошибка 404 файла eurl.axd после установки ASP.NET 4.0

by DenizK 18. августа 2010 15:31
При обновлении сервера у клиента столкнулисть с 404 ошибкой фала eurl.axd после установки ASP.NET 4.0. Для исправления нужно добавить 1 значение в реестре. В ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0 внестие ключEnableExtensionlessUrls (типа DWORD) и установите значение 0. После изменений нужно перезапустить IIS (к примеру через iisreset). Подробности на http://www.asp.net/%28S%28ywiyuluxr3qb2dfva1z5lgeg%29%29/learn/whitepapers/aspnet4/breaking-changes#0.1__Toc256770153

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

ASP.NET | Tips & tricks

DotNetNuke портирован на C#

by DenizK 2. июня 2010 17:56
Это свершилось! Пока основная версия CMS конечно на VB.NET - т.к. тестирование новых сборок еще не завершено. Однако вы можете скачать исходный код на C# для версий 5.4.1 и 5.4.2. Подробности на http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryId/2623/DotNetNuke-source-in-C-Yeah-Really.aspx

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

ASP.NET | C#

Как получить скриншот другой страницы из asp.net приложения?

by DenizK 25. мая 2010 15:28
Очень просто - с WebBrowser контролом. НО! Нужно его запускать в отдельном STA потоке. А подробности на http://www.beansoftware.com/ASP.NET-Tutorials/Get-Web-Site-Thumbnail-Image.aspx

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

ASP.NET

ASP.NET 4 приходит с улучшенной версткой стандартных контролов

by DenizK 31. марта 2010 04:23

ASP.NET 4 приносит улучшения в генерацию кода серверных контролов <asp:>. Код стал прозраным и дружественным для работы с ним из javascript через DOM (у примеру убрали аццкую табличную верстку в asp:Menu). Для совместимости с уже существующими решениями добавлен новый параметр controlRenderingCompatbilityVersion

 

Подробности в статье у Скотта Гатри - http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series.aspx

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

ASP.NET

Отложенная загрузка фрагментов страницы

by DenizK 23. марта 2010 01:29

В блоге у Гайдара Магданурова наткнулся на полезную статью - Отложенная загрузка фрагментов страницы. Копипаста статьи ниже

Продолжая опубликованный ранее пост про получение HTML разметки контрола, рассмотрим один из возможных вариантов применения разметки. Например, используем ее для того, чтобы загрузить фрагмент страницы, который может загружаться длительное время (зависимость от медленного источника данных, необходимость длительных операций по генерации или подготовке данных и т.п.), после загрузки основного фрагмента страницы. Для этого нужно создать механизм отложенной загрузки гаджетов, реализованных в виде элементов управления.

Рассмотрим пример такой страницы:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DemoWebApp._Default" %>

<%@ Register Src="~/Pages/DataControl.ascx" TagPrefix="My" TagName="DataControl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table>
            <tr>
                <td style="width: 34%;">
                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras mattis, erat ac mollis
                    ultrices, tortor risus hendrerit est, at laoreet ante enim sit amet velit.
                </td>
                <td style="width: 33%;">
                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras mattis, erat ac mollis
                    ultrices, tortor risus hendrerit est, at laoreet ante enim sit amet velit.
                </td>
                <td style="width: 33%;">
                    <My:DataControl runat="server" />
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

Элемент управления DataControl.ascx загружает данные из удаленного веб-сервиса, который имеет тенденцию отдавать данные очень медленно. Соответственно в случае задержки на стороне удаленного сервиса страница будет загружаться очень долго и пользователь (или поисковый робот) может не дождаться загрузки страницы. Поэтому мы доработаем эту страницу и сделаем так, чтобы содержимое элемента управления загружалось уже после полной загрузки страницы.

Для этого мы воспользуемся Ajax запросом, обращающемся к следующей веб-службе:

namespace DemoWebApp
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ScriptService]
    public class PageService : System.Web.Services.WebService
    {
        [WebMethod]
        public string GetDataGadget()
        {
            Thread.Sleep(5000); // эмулируем тормоза
            Page pg = new Page();
            UserControl uc = (UserControl)pg.LoadControl("~/Pages/DataControl.ascx");
            pg.Controls.Add(uc);
            StringWriter sw = new StringWriter();
            HttpContext.Current.Server.Execute(pg, sw, false);
            return sw.ToString();
        }
    }
}

Особенно отмечу, что нужно пометить службу атрибутом ScriptService, чтобы для нее был сгенерирован proxy-класс на JavaScript, который мы будем использовать в Ajax коде.

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

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DemoWebApp._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
        <Services>
            <asp:ServiceReference Path="~/PageService.asmx" />
        </Services>
    </asp:ScriptManager>
    <div>
        <table>
            <tr>
                <td style="width: 34%;">
                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras mattis, erat ac mollis
                    ultrices, tortor risus hendrerit est, at laoreet ante enim sit amet velit.
                </td>
                <td style="width: 33%;">
                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras mattis, erat ac mollis
                    ultrices, tortor risus hendrerit est, at laoreet ante enim sit amet velit.
                </td>
                <td style="width: 33%;">
                    <div id="gadget">
                        Loading...</div>
                </td>
            </tr>
        </table>
    </div>
    </form>

    <script type="text/javascript">

        Sys.Application.add_init(page_Init);

        function page_Init() {
            DemoWebApp.PageService.GetDataGadget(gadget_OnSuccess, gadget_OnError);
        }

        function gadget_OnSuccess(result) {
            // Sys.UI.DomElement.removeCssClass($get('RSSBlock'), 'loading');
            $get('gadget').innerHTML = result;
        }

        function gadget_OnError() {
            $get('gadget').innerHTML = 'Loading error.';
        }
    </script>

</body>
</html>

Вот и все. Теперь загрузка “медленного” блока будет происходить после загрузки страницы. И пользователь сначала увидит нечто вроде:

image

А по мере загрузки блока, пользователь увидит и полноценный блок:

image

Теперь можно навешать много разной красоты, чтобы пользователю было не скучно: например, в div, в который загружается код гаджета, поместить какую-нибудь анимированную картинку.

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

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

 

 

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

AJAX | ASP.NET | Tips & tricks

Как получить html-рендер страницы

by DenizK 10. марта 2010 11:43

В одном из проектов возник вопрос как получить html-рендер страницы в текстовом виде для каких то действий. Нашли 2 варианта

Вариант 1. С помощью Server.Execute()

System.IO.StringWriter htmlStringWriter = new System.IO.StringWriter();

Server.Execute("Page.aspx", htmlStringWriter);

string htmlOutput = htmlStringWriter.GetStringBuilder().ToString();

 

Вариант 2. Переопределив  метод Render()

public partial class FilterDemo : System.Web.UI.Page
{
HtmlTextWriter _oldWriter = null;
StringWriter _stringWriter = new StringWriter();
protected override HtmlTextWriter CreateHtmlTextWriter(TextWriter tw)
{
_oldWriter = base.CreateHtmlTextWriter(tw);
return base.CreateHtmlTextWriter(_stringWriter);
}
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
string html = _stringWriter.ToString();
html = html.Replace("REPLACE ME!", "IT WAS REPLACED!");
_oldWriter.Write(html);
}
}

 

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

ASP.NET | Tips & tricks

Новый контрол от Microsoft для графиков <asp:chart runat="server"/>

by DenizK 6. февраля 2010 23:26

И в продолжение темы о выводе графиков - Microsoft выпустило контрол для вывода графиков. Подброности как всегда у Скотта Гатри http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx

3Д круговые диаграммы

Графики

 

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | Microsoft | Tools

Response is not available in this context? Не беда!

by DenizK 22. января 2010 14:37
Если вам в обработчиках Application_Start или Init в Global.asax необходимо осуществить перенаправление посетителя сайта, то при вызове Response.Redirect вы получите ошибку Response is not available in this context. В таких ситуациях вам нужно использовать метод Server.Transfer()

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | Tips & tricks

Вышел IIS media services 3.0

by DenizK 18. октября 2009 20:45

Вышла 3 версия  IIS media services (доступна для Windows 2008 and Windows 2008 R2) - подробности на http://blogs.iis.net/chriskno/archive/2009/10/12/iis-media-services-3-0-including-iis-live-smooth-streaming-has-been-released.aspx. В ней были переработаны или добавлены:

· Smooth Streaming технология адаптивной трансляции потокового видео через\ HTTP

· Live Smooth Streaming, для живой трансляции потокового видео

· Bit Rate Throttling счетчит для учитывания реальной скорости доставки видео до плейера

· Web Playlists безопасные последовательности медиа контента

· Advanced Logging с логгированием на клиенте и на сервере в реальном времени

· Application Request Routing (ARR) для HTTP-proxy и кеширования

Полезные ссылки

 

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | Silverlight

О нас

Это блог компании Инлайн. Мы занимаемся разработкой сайтов, корпоративных порталов и корпоративных информационных систем на основе новейших технологии Microsoft  - ASP.NET, SharePoint и Silverlight. А в этом блоге мы размещаем самые последние новости в области разработке для web.

Облако тегов