MVC错误预计脚本部分整数返回值

问题描述:

我在我的网站上的购物车上有一个奇怪的问题。我收到此错误:MVC错误预计脚本部分整数返回值

Error in: https://blah.com/ShoppingCart/GetAvailability Error Message: Section not defined: "Scripts". Stack Trace: at System.Web.WebPages.WebPageBase.RenderSection(String name, Boolean required) at System.Web.WebPages.WebPageBase.RenderSection(String name)

的问题是,它无法找到返回一个整数,而不是页面的“脚本”部分的控制器方法。其计算方法如下:

[HttpPost] 
public int GetAvailability(string sku) 
{ 
    ECCDestinationConfig cfg = new ECCDestinationConfig(); 

    try 
    { 
     RfcDestinationManager.RegisterDestinationConfiguration(cfg); 
     ... Calculate the stock quantity from SAP 
     return runningTotal; 
    } 
    catch 
    { 
     // make sure the destination is unregistered 
     RfcDestinationManager.UnregisterDestinationConfiguration(cfg); 
     return 0; 
    } 
} 

控制器方法是通过AJAX称为像这样:

$.ajax({ 
    url: "/ShoppingCart/GetAvailability", 
    type: "POST", 
    data: JSON.stringify({ 'sku': '@Model.Product.SKU' }), 
    dataType: "json", 
    traditional: true, 
    contentType: "application/json; charset=utf-8", 
    success: function (data) { 
     //Code to set a span to show a green check if over 0 and a red 
     //exclamation if under. 
    }, 
    error: function() { 
     $('#@id').addClass("fg-crimson fa fa-exclamation"); 
    } 
}); 

因此,该方法应该永远只返回一个整数,但我有用户报告的问题,我看到错误日志中的“脚本”未定义错误消息。我无法在调试时重现这一点。我不明白为什么服务器在这里期待一个页面。奇怪的是,如果我重置网站的应用程序池,问题将暂时消失。我显然不会在某处陷入一些错误,但我无法想象可能会发生什么。

+0

ajax页面是否有表单,并且您是否阻止表单的默认提交? – Jasen

+0

@Jasen ajax调用实际上来自表中的局部视图。该部分显示一个加载图标,直到获得结果,此时它显示一个复选标记或感叹号。每页通常有多个呼叫,因为它是按行项目。 – Nick

这个错误的可能原因是,我说可能的原因,因为我没有看到你的代码,你在视图中有@RenderSection(“scripts”,required:false),必需的属性设置为true,@RenderSection(“脚本“,required:true)。如果它设置为true,并且您不提供JavaScript,则会出现错误。当你将它设置为false时,那么你告诉剃须刀引擎,如果我不提供脚本,请不要理会我。所以把它设置为假,你会没事的。

+0

我实际上没有传递第二个参数,我猜默认为true。我会给这个镜头。 – Nick

+0

按照我最后一句话,请将它设置为false –

+0

看起来它已经解决了问题。谢谢。 – Nick