我的网站上的购物车上有一个奇怪的问题。我收到了这个错误:
问题是它无法找到“Scripts”部分的控制器方法返回一个整数,而不是一个页面。它如下:错误:https://blah.com/ShoppingCart/GetAvailability 错误消息:未定义的部分:“脚本”。 堆栈跟踪:在System.Web.WebPages.WebPageBase.RenderSection(字符串名称,需要布尔值) 在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 :(得分:1)
这个错误的可能原因是,我说可能是因为我没有看到你的代码,你在视图中有@RenderSection(" scripts",required:false),带有必需的属性设置为true,@ RenderSection("脚本",必需:true)。如果它设置为true并且您没有提供javascript,则会收到错误。当你将它设置为false时,如果我不提供脚本,那么你告诉剃须刀引擎请忽略我。所以把它设置为假,你会没事的。