plupload с ASP.NET MVC 4, получая ошибку времени выполнения Microsoft JScript: «plupload» не определен - PullRequest
2 голосов
/ 27 марта 2012

Я работаю над приложением MVC 4, чтобы принимать загруженные файлы от пользователей. Я новичок в plupload и бета-версии MVC 4, так что, может быть, мне чего-то не хватает, просто

Я использую следующее:

  • ASP.NET MVC 4 (бета)
  • jQuery 1.7.1
  • jQuery UI 1.8.18
  • plupload 1.5.2


У меня есть структура папок по умолчанию, за исключением того, что у меня есть папка ресурсов, содержащая папку src для plupload, названную как plupload, то есть: "~ / Assets / plupload / plupload.full.js". Я сделал это, чтобы изолировать сценарии от обычная папка сценариев, чтобы изолировать эту ошибку и предотвратить захват ее в алфавитном порядке.

В этой заметке я знаю о проблеме последовательности объединения при использовании поведения комплекта по умолчанию, и я думаю, что предпринял шаги для управления этим. Первоначально я создавал пользовательский пакет только для материала plupload, но он служил асинхронно, что могло быть проблемой для применения моих последовательностей. Затем я добавил файлы в стандартный пакет «~ / Scripts / js». К сожалению, «plupload» - неопределенная ошибка, все еще генерируется jQuery UI Mouse 1.8.18.

Мой Shared_Layout.cshtml содержит это (конечно, это используется для всех страниц, а не только для страницы загрузки). Я не был уверен, будет ли это проблемой или нет. Я также попробовал страницу _Layout только для страницы загрузки. :

...
<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/themes/base/css")" rel="stylesheet" type="text/css" />
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>

    <meta name="viewport" content="width=device-width" />
</head>
<body>
    <header>
       ...

Global.asax содержит ...

        /// <summary>
    /// Default method that fires when the application starts.
    /// </summary>
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        BundleTable.Bundles.RegisterTemplateBundles();

        Bundle b = BundleTable.Bundles.GetBundleFor("~/Scripts/js");

        b.AddFile("~/Assets/plupload/plupload.full.js");
        b.AddFile("~/Assets/plupload/jquery.plupload.queue/jquery.plupload.queue.js");
        b.AddFile("~/Assets/plupload/jquery.ui.plupload/jquery.ui.plupload.js");

Фактическая страница загрузки:

@{
ViewBag.Title = "Upload Files";
}

<script type="text/javascript">
// Convert divs to queue widgets when the DOM is ready
$(function () {
    $("#uploader").plupload({
        // General settings
        runtimes: 'gears,flash,silverlight,html5,html4',
        url: '/FileManager/Upload',
        // CLC >> No Limit
        // max_file_size: '10mb',
        chunk_size: '1mb',
        unique_names: true,

        // CLC >> Need original resolutions.
        // Resize images on clientside if we can
        // resize: { width: 320, height: 240, quality: 90 },

        // Specify what files to browse for
        filters: [
        { title: "Image files", extensions: "jpg,gif,png" },
        { title: "Designer Files", extensions: "ai,indd" },
        { title: "Zip files", extensions: "zip" }
    ],

        // Flash settings
        flash_swf_url: '/Assets/plupload/plupload.flash.swf',

        // Silverlight settings
        silverlight_xap_url: '/Assets/plupload/plupload.silverlight.xap'
    });

    // Client side form validation
    $('form').submit(function (e) {
        var uploader = $('#uploader').plupload('getUploader');

        // Files in queue upload them first
        if (uploader.files.length > 0) {
            // When all files are uploaded submit form
            uploader.bind('StateChanged', function () {
                if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
                    $('form')[0].submit();
                }
            });

            uploader.start();
        } else
            alert('You must at least upload one file.');

        return false;
    });
    });
</script>


<h2>Upload Files</h2>

<form action="Upload">
<div id="uploader">
    <p>Sorry, you browser doesn't have Flash, Silverlight, Gears, HTML5 or HTML4 support. Please try to upload using a different web browser or install one or more of these runtimes and try again:<br /><br />
    </p>
    <ul>
       <li><a href="http://www.adobe.com/go/getflash">Adobe Flash Player</a></li>
       <li><a href="http://www.microsoft.com/silverlight/">Microsoft Silverlight</a></li>
    </ul>
</div>
</form>

Используя Fiddler2, я вижу, что пакет создается и минимизируется. Каждая страница (включая домашнюю страницу) получает ошибку в функции мыши. Любые идеи о том, что я могу сделать, чтобы это произошло?

Кто-нибудь знает образец ПОЛНОГО MVC 4, использующий plupload? Продукт содержит образцы для Silverlight, php и т. Д., Но, похоже, в последнее время произошли некоторые изменения в распределении (plupload.full.js по сравнению с plupload.js), которое встряхивает образцы.

...