2009-09-05 33 views
0

在這一刻我打電話給我的索引視圖的兩種方式之一。使用正常的http視圖並將其序列化爲JSON。爲了測試它,我使用下面的代碼,並且它工作。我想通過http調用來獲取它。贊(類似http://localhost/article,json什麼的。任何想法。如何模擬來自HTTP GET調用的JSON調用?

$.getJSON("/Article", function(json) { 
      $.each(json, function(i, article) { 
       alert(article.title); 
      }); 
     }); 

此時調用索引/文章在被分化與以下IsAjaxRequest方法。但我真正的問題是,如果我能夠得到各地.getJSON在JQuery的方法來測試下面的代碼。

if (Request.IsAjaxRequest()) 
      { 
       return Json(articles); 
      } 
      else 
      { 
       return View(articles); 
      } 

回答

1

如果你想重複使用相同的操作方法兩個完整的GET(頁面加載)和AJAX調用(通過的getJSON),你會碰到因爲每個動作方法都應該有一個唯一的名字,否則,MVC引擎無法分辨出哪個動作方法應該被調用請求Url。

您需要兩個單獨的操作:一個用於完整頁面加載,返回ViewResult,另一個用於返回JsonResult的AJAX調用。如果你需要這些動作的Url看起來一樣,你也可以使用映射路線指向不同的動作方法。

那麼,怎麼樣:

/條/索引 映射到默認的索引操作(全頁面加載)

/條/刷新 映射到刷新動作(異步JSON調用)

0

我不確定我是否正確地理解了這個問題,但是您不能製作一個名爲「format」的可選參數,以便您傳遞?format = json來切換返回的回覆類型。

if(Request.IsAjaxRequest() || (!string.IsNullOrEmpty(format) && format.Equals("json")) 
{ 
    ... 
} 
0

如果你想知道如何測試你的行動和你談論的是做自動化測試,看看是否this post回答你的問題。

相關問題