2015-11-02 30 views
1

我在我的網站上的購物車上有一個奇怪的問題。我收到此錯誤: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

回答

1

這個錯誤的可能原因是,我說可能的原因,因爲我沒有看到你的代碼,你在視圖中有@RenderSection(「scripts」,required:false),必需的屬性設置爲true,@RenderSection(「腳本「,required:true)。如果它設置爲true,並且您不提供JavaScript,則會出現錯誤。當你將它設置爲false時,那麼你告訴剃鬚刀引擎,如果我不提供腳本,請不要理會我。所以把它設置爲假,你會沒事的。

+0

我實際上沒有傳遞第二個參數,我猜默認爲true。我會給這個鏡頭。 – Nick

+0

按照我最後一句話,請將它設置爲false –

+0

看起來它已經解決了問題。謝謝。 – Nick