2013-05-10 71 views
1

可能這聽起來很愚蠢的問題,但我是一個剛剛瞭解MVC的學生,我覺得它很有趣。另外,我對Ajax和jQuery知之甚少。我一直在創建一些基本的應用程序,如發佈評論或博客帖子,而不使用Ajax服務或jQuery。現在我已經到了一個看到Ajax服務被調用並且正在編寫自定義jQuery代碼的部分。爲什麼以及何時在ASP.NET MVC中使用Ajax服務和jQuery?

讓我們考慮一個小例子,在這個小例子中,您可以在主頁上添加評論,並且在撰寫和提交評論之後,它會顯示在主頁上。 想象一下,一個控制器以下功能

public class CustomAjaxController : Controller 
    { 
     // 
     // GET: /CustomAjax/ 
     private static readonly List<string> Comments = new List<string>(); 
     public ActionResult Index() 
     { 
      return View(Comments); 
     } 

     [HttpPost] 
     public ActionResult AddComment(string comment) 
     { 
      Comments.Add(comment); 

      return RedirectToAction("Index"); 
     } 
    } 

我知道使用字符串列表來存儲的意見是不是好主意,但爲簡單起見,並解釋我的觀點,我用它。我也沒有型號,但同樣的原因。

@model IEnumerable<string> 



<h4>comments</h4> 
<ul id ="comments"> 
    @foreach (var comment in Model) 
    { 
     <li>@comment</li> 
    } 
</ul> 
<form method="POST" id="commentsForm" 
    action = "@Url.Action("AddComment")"> 

    @Html.TextArea("Comment", new{rows =5, cols =40}) 
    <br/> 

    <input type ="submit" value="Add comment"/> 

</form> 

現在,我已經看到了同樣的事情正在使用jQuery和Ajax請求完成。但爲什麼我應該這樣做才能達到相同的結果,或者我怎麼知道這是使用ajax請求的正確位置。

回答

2

但是我爲什麼要這樣做才能達到相同的結果,或者我怎麼知道這個 是使用ajax請求的正確位置。

AJAX提供了幾個好處:

  • 因爲只有你想被實際更新頁面的部分通過網絡發送這樣可以節省帶寬。在示例代碼中你重裝即使只有一句話,就是在同一個地方增加了整個HTML
  • 這是異步的意思是,用戶可以在頁面上做其他事情,而等待服務器端處理

你可以使用它,只要你想利用其中的一件事情。

+0

那麼爲什麼我應該檢查請求是否是ajax請求,並且如果ajax請求爲真則返回部分視圖?那麼這可能只會刷新評論部分而不是整個頁面? – Cybercop 2013-05-10 13:28:17

+1

是的,確切地說。當你返回一個局部視圖時,你只返回整個HTML頁面的一小部分 - 只有需要刷新的部分。您也可以從控制器操作中返回JSON,並在客戶端上使用此JSON執行一些操作。 – 2013-05-10 13:33:27

相關問題