FileUpload управляют в UpdatePanel, не обновляя целую страницу?

Никто не предоставил « классическое решение Reflection », так что вот полный пример кода:

using System;
using System.Collections;
using System.Collections.Generic;

namespace DictionaryRuntime
{
    public class DynamicDictionaryFactory
    {
        /// <summary>
        /// Factory to create dynamically a generic Dictionary.
        /// </summary>
        public IDictionary CreateDynamicGenericInstance(Type keyType, Type valueType)
        {
            //Creating the Dictionary.
            Type typeDict = typeof(Dictionary<,>);

            //Creating KeyValue Type for Dictionary.
            Type[] typeArgs = { keyType, valueType };

            //Passing the Type and create Dictionary Type.
            Type genericType = typeDict.MakeGenericType(typeArgs);

            //Creating Instance for Dictionary<K,T>.
            IDictionary d = Activator.CreateInstance(genericType) as IDictionary;

            return d;

        }
    }
}

Выше DynamicDictionaryFactory класс имеет метод

CreateDynamicGenericInstance(Type keyType, Type valueType)

, и он создает и возвращает экземпляр IDictionary, типы ключей и значений которых точно указаны в запросе keyType и valueType.

Вот полный пример того, как вызвать этот метод для создания экземпляра и использования Dictionary<String, int>:

using System;
using System.Collections.Generic;

namespace DynamicDictionary
{
    class Test
    {
        static void Main(string[] args)
        {
            var factory = new DictionaryRuntime.DynamicDictionaryFactory();
            var dict = factory.CreateDynamicGenericInstance(typeof(String), typeof(int));

            var typedDict = dict as Dictionary<String, int>;

            if (typedDict != null)
            {
                Console.WriteLine("Dictionary<String, int>");

                typedDict.Add("One", 1);
                typedDict.Add("Two", 2);
                typedDict.Add("Three", 3);

                foreach(var kvp in typedDict)
                {
                    Console.WriteLine("\"" + kvp.Key + "\": " + kvp.Value);
                }
            }
            else
                Console.WriteLine("null");
        }
    }
}

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

Dictionary<String, int>
"One": 1
"Two": 2
"Three": 3
18
задан Shog9 19 September 2008 в 22:42
поделиться

5 ответов

Я знаю о стороннем компоненте, который может сделать это. Это звонило " swfupload" и свободно использовать и открытый исходный код и использует JavaScript и флэш-память, чтобы сделать волшебство.

вот список функций, которые они предлагают: (от их сайта)

  • Загрузка несколько файлов сразу ctrl/shift-selecting в диалоговом окне
  • обратные вызовы JavaScript на всех событиях
  • Получают информацию файла, прежде чем загрузка запустится
  • элементы загрузки Стиля с XHTML и информацией о Дисплее css
  • , в то время как файлы загружают использование, страница No HTML
  • перезагружает необходимый
  • Работы над всеми платформами/браузерами, который имеет поддержку Flash.
  • Ухудшается корректно к нормальной форме загрузки HTML, если Flash или JavaScript недоступны
  • размер файла Управления, прежде чем загрузка запустится
  • Только дисплей выбранные типы файлов в диалоговом окне
  • загрузки Очереди, удалите/добавьте файлы перед стартовой загрузкой

, Они также имеют демонстрационная область , где можно играть вокруг с их управлением. Тем путем можно удостовериться, что это точно, что Вы хотите.

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

, о, и вот страница загрузки: http://code.google.com/p/swfupload/

8
ответ дан 30 November 2019 в 09:19
поделиться

Вы не можете загрузить файл (файлы) через AJAX только путем перезагрузки целого HTML документ. Необходимо или использовать iframe с, если Вы предпочитаете чистый HTML (это более распространено, например, используемое WordPress), или что-то еще как swfupload, предложенный Sven.

3
ответ дан 30 November 2019 в 09:19
поделиться

Добавьте это к своему кнопочному управлению:

OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';"

- или

Заставляют Ваш Тег form страницы быть похожим:

<form id="form1" runat="server" enctype="multipart/form-data">
3
ответ дан 30 November 2019 в 09:19
поделиться

Я нашел это на днях, когда я столкнулся с той же проблемой: http://vinayakshrestha.wordpress.com/2007/03/13/uploading-files-using-aspnet-ajax-extensions/ .

Для моей реализации, я поместил iframe в модальное всплывающее окно и добавил кнопку со стилем = "display:none" для обработки закрытия всплывающего окна. В функции JavaScript, которая наблюдает за изменением в iframe, я добавил document.getElementById (" < % =btnCloseUpload. % ClientID>"). нажмите (); для скрытой кнопки.

1
ответ дан 30 November 2019 в 09:19
поделиться

Попробуйте использовать AJAX AsyncFileUpload. Он хорошо работает, если использовать его по назначению (обрабатывать событие UploadedComplete).

http://www.asp.net/AJAX/AjaxControlToolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx

1
ответ дан 30 November 2019 в 09:19
поделиться
Другие вопросы по тегам:

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