2012-12-14 59 views
0

当我在释放模式下使用时捆绑收到以下错误f为空。但出于某种原因,一旦文件被捆绑在一起,我会收到错误信息。我已经定义了下列软件包:类型错误:使用ASP.NET MVC4捆绑

 bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/Common/jquery/jquery-{version}.js", 
        "~/Scripts/Common/jquery/jquery-ui-{version}.js", 
        "~/Scripts/Common/jquery/jquery.labelify.js")); 

     bundles.Add(new ScriptBundle("~/bundles/login").Include(
      "~/Scripts/Common/knockout/knockout-2.1.0.js", 
      "~/Scripts/Common/knockout/json2.js", 
      "~/Scripts/Common/knockout/knockout.validation.min.js", 
      "~/Scripts/Common/knockout/KnockoutValidationConfiguration.js", 
      "~/Scripts/App/Common/LoginViewModel.js" 
      )); 

而且我在页面的页眉内部渲染了这些包。而在我的Login.cshtml文件的底部,我有以下代码:

<script type="text/javascript"> 
    $(function() { 
     var context = new LoginViewModel(); 
     ko.applyBindings(context, document.getElementById('login_form')); 
    }); 
</script> 

当我注释掉,我没有得到的错误了。

我不确定这是否是由LoginViewModel引起的,也可能是其中一个正在使用的库。无论如何,这里的LoginViewModel代码:

function LoginViewModel() { 
    var self = this; 

    self.Username = ko.observable().extend({ required: { message: "Nom d'utilisateur est obligatoire" } }); 
    self.Password = ko.observable().extend({ required: { message: 'Mot de passe est obligatoire' } }); 
    self.ErrorMessage = ko.observable(); 
    self.enableButton = ko.computed(function() { 
     var errors = ko.utils.unwrapObservable(ko.validation.group(self)); 
     return (errors.length == 0); 
    }); 

    self.onLogin = function() { 
     var credentials = ko.toJSON({ 
      Username: self.Username(), 
      Password: self.Password() 
     }); 
     $.ajax({ 
      url: "/Account/Login", 
      type: "post", 
      contentType: 'application/json', 
      data: credentials, 
      success: function (data) { 
       if (data && data.result == "success") { 
        self.ErrorMessage(""); 
        window.location = data.targetUrl; 
       } 
       else if (data && data.result == "failure") { 
        self.ErrorMessage(data.errorMessage); 
       } 
      } 
     }); 
    } 
}; 

有什么想法?我怎样才能调试,为什么它只发生在发布模式?

回答

0

请勿使用"~/Scripts/Common/knockout/knockout.validation.min.js",请改为使用开发文件:"~/Scripts/Common/knockout/knockout.validation.js"

+0

没有。这没有用。 – Kassem

+0

我刚刚注释掉了所有对基因敲除验证的引用,并且错误消失了。所以我猜这个库有什么问题吗?我做了你的建议,但没有解决问题。有任何想法吗? – Kassem

+0

我无法回答你的问题,因为我不知道knockout.validation。我只知道你不能将一个.min文件添加到一个包中。 – MuriloKunze