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");
}
});
因此,该方法应该永远只返回一个整数,但我有用户报告的问题,我看到错误日志中的“脚本”未定义错误消息。我无法在调试时重现这一点。我不明白为什么服务器在这里期待一个页面。奇怪的是,如果我重置网站的应用程序池,问题将暂时消失。我显然不会在某处陷入一些错误,但我无法想象可能会发生什么。
答
这个错误的可能原因是,我说可能的原因,因为我没有看到你的代码,你在视图中有@RenderSection(“scripts”,required:false),必需的属性设置为true,@RenderSection(“脚本“,required:true)。如果它设置为true,并且您不提供JavaScript,则会出现错误。当你将它设置为false时,那么你告诉剃须刀引擎,如果我不提供脚本,请不要理会我。所以把它设置为假,你会没事的。
ajax页面是否有表单,并且您是否阻止表单的默认提交? – Jasen
@Jasen ajax调用实际上来自表中的局部视图。该部分显示一个加载图标,直到获得结果,此时它显示一个复选标记或感叹号。每页通常有多个呼叫,因为它是按行项目。 – Nick