2015-10-27 50 views
-9

代碼:C#MVC AngularJS

[ResponseType(typeof(List<MyClass>))] 
public async Task<IHttpActionResult> Get() 
{ 
    var userId = User.Identity.Name; 
    var obj = await this.FindAllAsync(userId); 

    if (obj == null) 
    { 
     return this.NotFound(); 
    } 

    return this.Ok(obj); 
} 

它似乎並不不過拋出任何錯誤的服務器端,但它在角器客戶端沒有任何一個有什麼想法?

我最初的代碼是:ResponseType(typeof(bool)],現在因爲改變它不起作用,所以返回一個不允許的List對象,或者我需要在Angular js文件中做一些額外的事情,或者我的C#控制器類來得到它的工作,例如Json-fy它?!?!

請參閱http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/build-a-single-page-application-(spa)-with-aspnet-web-api-and-angularjs的代碼庫。我所做的是更改一個調用返回列表我看不出爲什麼這是任何不同的。我沒有修改客戶端控制器類以外的代碼升級到新的語法任何意義。

$http.get("/api/crosswordHelper").then(
    function (response) { 
     //$scope.historyItems = data.userHistory; 
     $scope.title = "This app allows you to find all of the words in a dictionary which obey a regular expression."; 
     $scope.working = false; 
    }, 
    function (response) { 
     $scope.title = "Oops... something went wrong '" + response.statusText + "'"; 
     $scope.working = false; 
    }); 

應用程序暫時掛起(如10秒鐘),然後顯示「Oops ...」錯誤消息,其狀態文字爲「內部服務器錯誤」。我也可以告訴你,調用FindAllSync會返回一行,如我所料。我不明白爲什麼我需要在原始代碼沒有的時候將它作爲下面的評論中的代碼來獲取。

+0

你會得到什麼錯誤? – CodeCaster

+0

??我如何顯示錯誤。 })。error(function(data,status,headers,config)$ scope.title =「Oops ... something goes wrong」; $ scope.working = false; }); – Glen

+0

你顯示什麼代碼不足以看到問題。你應該發佈角碼並告訴我們錯誤的詳細信息 –

回答

1

對不起浪費每個人的時間,因爲我找到了解決我自己的問題 - 我又獲得了傻瓜獎。服務器每次都停止渲染爲我打開燈泡的顯示屏。

儘管我的結果集是對象列表,但列表中只有1個項目,但對象本身包含58,000多行的內部列表!

所以我決定只返回我的目的所需要的東西,即我添加了一個[JsonIgnore]標籤到我的班的適當的內部列表字段,因爲我不需要將這個內部列表帶到客戶端。想象一下,如果我的列表中有多個項目。無論如何,迴應幾乎是同時發生!