Asp.net mvc 4 带有ASP.NET MVC 4的plupload获取Microsoft JScript运行时错误:';plupload';是未定义的

Asp.net mvc 4 带有ASP.NET MVC 4的plupload获取Microsoft JScript运行时错误:';plupload';是未定义的,asp.net-mvc-4,plupload,Asp.net Mvc 4,Plupload,我正在开发一个MVC4应用程序来接受用户上传的文件。我对plupload和MVC4beta还不熟悉,所以也许我缺少一些简单的东西 我正在使用以下工具: ASP.NET MVC 4(测试版) jQuery 1.7.1 jQueryUI1.8.18 plupload 1.5.2 我有默认的文件夹结构,但有一个资产文件夹,其中包含名为plupload的plupload的src文件夹,即:“~/Assets/plupload/plupload.full.js”我这样做是为了尝试将脚本从普通脚本文件

我正在开发一个MVC4应用程序来接受用户上传的文件。我对plupload和MVC4beta还不熟悉,所以也许我缺少一些简单的东西

我正在使用以下工具:

  • ASP.NET MVC 4(测试版)
  • jQuery 1.7.1
  • jQueryUI1.8.18
  • plupload 1.5.2

我有默认的文件夹结构,但有一个资产文件夹,其中包含名为plupload的plupload的src文件夹,即:“~/Assets/plupload/plupload.full.js”我这样做是为了尝试将脚本从普通脚本文件夹中隔离出来,以隔离此错误,并防止捆绑程序按字母顺序获取这些脚本

在这一点上,我知道在使用默认捆绑行为时捆绑顺序的问题,我想我已经采取了一些措施来控制它。最初,我只为plupload创建了一个定制包,但它是异步服务的,这可能是我的序列执行的一个问题。然后我将这些文件添加到默认的“~/Scripts/js”包中。不幸的是,jQueryUIMouse 1.8.18仍然抛出“plupload”未定义错误

我的Shared_Layout.cshtml包含这个(当然,它用于所有页面,而不仅仅是上传页面),我不确定这是否会有问题。我还尝试了一个仅用于上传页面的布局页面:

...
<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");
//
///应用程序启动时激发的默认方法。
/// 
受保护的无效应用程序\u Start()
{
RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
注册地址(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>
@{
ViewBag.Title=“上传文件”;
}
//当DOM就绪时,将div转换为队列小部件
$(函数(){
$(“#上传器”).plupload({
//一般设置
运行时:“gears、flash、silverlight、html5、html4”,
url:“/FileManager/Upload”,
//CLC>>无限制
//最大文件大小:“10mb”,
块大小:“1mb”,
唯一的名称:true,
//CLC>>需要原始分辨率。
//如果可以,在客户端调整图像大小
//调整大小:{宽度:320,高度:240,质量:90},
//指定要浏览的文件
过滤器:[
{标题:“图像文件”,扩展名:“jpg,gif,png”},
{标题:“设计器文件”,扩展名:“ai,indd”},
{标题:“Zip文件”,扩展名:“Zip”}
],
//闪光设置
flash_swf_url:“/Assets/plupload/plupload.flash.swf”,
//Silverlight设置
silverlight_xap_url:“/Assets/plupload/plupload.silverlight.xap”
});
//客户端表单验证
$('form')。提交(函数(e){
var uploader=$('#uploader').plupload('getUploader');
//队列中的文件首先上载它们
如果(uploader.files.length>0){
//上传所有文件后,提交表单
uploader.bind('StateChanged',函数(){
if(uploader.files.length==(uploader.total.upload+uploader.total.failed)){
$('form')[0]。提交();
}
});
uploader.start();
}否则
警报('您必须至少上载一个文件');
返回false;
});
});
上传文件
很抱歉,您的浏览器不支持Flash、Silverlight、Gears、HTML5或HTML4。请尝试使用其他web浏览器上载,或安装一个或多个运行时,然后重试:

使用Fiddler2,我可以看到捆绑包正在被创建和缩小。每个页面(包括主页)都会在鼠标功能中出现错误。我能做些什么来实现这一点吗


有人知道使用plupload的完整MVC4示例吗?该产品包含Silverlight、php等的示例,但该发行版最近似乎有一些变化(plupload.full.js与plupload.js)这动摇了样本。

我几乎放弃了jQuery UI风格。我切换到plupload队列,至少可以让运行时显示在屏幕上。天哪……我从来没有遇到过这样的问题。你仍然有问题吗?jQuery非常有帮助。我希望你没有放弃。如果你仍然需要帮助,请不要放弃hen让我知道。使用@和我的nick在这条评论中给我发消息。我发现捆绑包在最新的jquery/jquery ui中导致了错误,这是由于它们的缩小。可能有人只是不想再次使用分号来保存字符。我唯一可以修复它的方法是删除捆绑包并将它们全部放在自己的sc中在_layout.cshtml中的cript标记。我几乎放弃了jQuery UI风格。我切换到plupload队列,至少可以让运行时显示在屏幕上。天哪……我从来没有遇到过这样的问题。你仍然有问题吗?jQuery非常有帮助。我希望你不要放弃。如果你仍然需要帮助en让我知道。使用@和我的nick在这条评论中给我发消息。我发现捆绑包在最新的jquery/jquery ui中导致错误,这是由于它们的缩小。可能有人只是不想再次使用分号来保存字符。我唯一可以修复它的方法是删除捆绑包并将它们全部放在各自的scr中_layout.cshtml中的ipt标记。