ASP.NET обратные вызовы JavaScript без полного PostBacks?

Я думаю, вы неправильно поняли концепцию flavorDimension.

Аромат-аромат - это что-то вроде категории вкуса , и каждая комбинация аромата из каждого измерения даст вариант.

В вашем случае вы должны определить один аромат, называемый «тип», и другое измерение, называемое «организация». Он будет производить для каждого аромата в «организации» измерения все возможные «типы» (или двойную формулировку: для каждого «типа» он будет давать вариант для каждой организации).

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


EDIT: я попытаюсь проиллюстрировать код псевдограду:

Давайте определим некоторый «тип»: бронза, серебро и золото

Давайте определим некоторые организации: customerA, customerB, customerC

Все это productFlavors , но они относятся к двум различным размерам:

flavorDimensions("type_line", "organization")
productFlavors {

    gold {
        ...
        dimension = "type_line"
    }
    silver {
        ...
        dimension = "type_line"
    }
    bronze {
         ...
        dimension = "type_line"
    }

     customerA {
        ...
        dimension = "organization"
    }
    customerB {
        ...
        dimension = "organization"
    }
    customerC {
         ...
        dimension = "organization"
    }

}

Эта конфигурация будет производят 18 (3 * 3 * 2) варианта (если у вас есть 2 стандартных типа сборки: отладка и выпуск):

gold-customerA-debug; gold-customerA-релиз; gold-customerB-debug; gold-customerB-релиз; gold-customerC-debug; gold-customerC-релиз;

silver-customerA-debug; серебро-клиентА-релиз; silver-customerB-debug; серебро-клиентB-релиз; silver-customerC-debug; серебро-клиентC-релиз;

... (то же самое для бронзы)

Обратите внимание, что имя измерения абсолютно произвольно и не влияет на имена вариантов.

Размеры вкуса являются очень мощными, но если вы используете слишком много из них: это приводит к экспоненциальному взрыву числа вариантов (задача очистки после сборки может быть полезна для удаления бесполезного или нечувствительного варианта)

6
задан Community 23 May 2017 в 12:13
поделиться

9 ответов

Если Вы не хотите создавать пустую страницу, Вы могли бы назвать IHttpHandler (ashx) файлом:

public class RSSHandler : IHttpHandler
    {
        public void ProcessRequest (HttpContext context)
        {   
            context.Response.ContentType = "text/xml";

            string sXml = BuildXMLString(); //not showing this function, 
            //but it creates the XML string
            context.Response.Write( sXml );
        }

        public bool IsReusable
        {
            get { return true; }
        }

    }
6
ответ дан 8 December 2019 в 14:49
поделиться

То, что Вы думаете, было бы лучшим методом передачи данных IHttpHandler? Должен я добавил переменные к строке запроса или POST данные, которые я должен отправить? Единственной вещью я думаю, что должен отправить, является единственный идентификатор, но я не могу решить то, что лучший метод должен отправить идентификатору и сделать, чтобы IHttpHandler обработал ее. Я хотел бы предложить решение, которое предотвратит человека с основными компьютерными навыками от случайно или намеренно доступ к странице непосредственно

Рассмотрение обратного вызова прокладывается под землей в клиентском коде, это взяло бы кого-то с равным определением для получения или querystring или запроса POST. IE, если у них есть поджигатель, Ваш одинаково завинченный.

Так, в этом случае сделайте то, что является самым легким Вам (Подсказка: я просто использовал бы querystring).

Для обработки повторяющихся запросов/прямого доступа я генерировал бы ключ, который отправляется с каждым запросом. Возможно, хеш текущего времени (Нечеткий, я спустился бы до минут, но не секунд из-за сетевой задержки), + клиентский IP.

Затем в HTTPHandler, выполните тот же хеш и только работайте, если они соответствуют.

3
ответ дан 8 December 2019 в 14:49
поделиться

Необходимо использовать Обратные вызовы ASP.NET, которые были представлены у Asp. Сетевые 2.0. Вот статья, которая должна заставить Вас набор идти:

Реализация клиентских обратных вызовов программно без обратных передач в веб-страницах ASP.NET

Править: Также посмотрите на это: ICallback & JSON Основанная Сериализация JavaScript

3
ответ дан 8 December 2019 в 14:49
поделиться

Вы только ограничиваетесь Ajax ASP.NET, но можете пользоваться любой сторонней библиотекой как jQuery, YUI и т.д., чтобы сделать то же самое. Можно затем просто выполнить запрос к пустой странице на сайте, который должен возвратить заголовки, которые содержат cookie.

2
ответ дан 8 December 2019 в 14:49
поделиться

Мой голос с предложением HTTPHandler также. Я часто использую это. Поскольку это не вызывает экземпляр класса страницы, это очень легко.

Все приемы платформы Ajax ASP.NET на самом деле инстанцируют и создают всю страницу снова на бэкенде на вызов, таким образом, они - огромные пожиратели ресурсов.

Следовательно, мой типичный стиль XmlHttpRequest назад к HttpHandler.

2
ответ дан 8 December 2019 в 14:49
поделиться

Так как Вы используете только ASP.NET 2.0, я рекомендовал бы, чтобы AjaxPro был, которые создают .ashx файл. Все, что необходимо сделать, должно вытянуть AjaxPro.dll в веб-сайт. Я разработал целое приложение с AjaxPro и нашел, что он работал очень хорошо. Это использует сериализацию для передачи объектов назад и вперед.

Это - просто образец о том, как просто использовать его.

namespace MyDemo
{
  public class Default
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      AjaxPro.Utility.RegisterTypeForAjax(typeof(Default));
    }

    [AjaxPro.AjaxMethod]
    public DateTime GetServerTime()
    {
      return DateTime.Now;
    }
  }
}

Для вызова его через JavaScript, он так же прост как

function getServerTime()
{
  MyDemo._Default.GetServerTime(getServerTime_callback);  // asynchronous call
}

// This method will be called after the method has been executed
// and the result has been sent to the client.

function getServerTime_callback(res)
{
  alert(res.value);
}

Править

Также необходимо добавить

К конфигурации. AjaxPro также работает хорошо бок о бок с Ajax APS.NET, и можно передать объекты C# от Клиента Разъединить, если класс отмечен как [сериализуемый]

1
ответ дан 8 December 2019 в 14:49
поделиться

Можно также использовать WebMethods, которые встроены в asp.net ajax библиотека. Вы просто создаете статический метод для codebehind и вызова страницы это от Вашего Ajax.

Существует довольно основной пример того, как сделать это здесь

-1
ответ дан 8 December 2019 в 14:49
поделиться

Необходимо использовать веб-сервис (.asmx). С Ajax ASP.NET Microsoft можно даже автоматически сгенерировать тупики.

-1
ответ дан 8 December 2019 в 14:49
поделиться

Просто чтобы предложить другую точку зрения, вы также можете использовать PageMethod на вашей главной странице. У Дейва Уорда есть замечательный пост, который иллюстрирует это. По сути, вы используете jQuery ajax post для вызова метода, как показано в посте Дейва:

$.ajax({
    type: "POST",
    url: "Default.aspx/GetFeedburnerItems",
    // Pass the "Count" parameter, via JSON object.
    data: "{'Count':'7'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      BuildTable(msg.d);
    }
  });

Нет необходимости в Asp.Net Ajax расширениях вообще.

.
1
ответ дан 8 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: