ASP.NET 的MVC結構之AJAX

iDotNetSpace發表於2008-08-26
ASP.NET Web Form下的AJAX

        在傳統的Asp.Net下,如果不使用Asp.Net Ajax或者如Ajax.Net此類第三方的框架,就需要一個空白的頁面,並且在此頁面的Page_Load方法中完成所有的伺服器端的操作,通過Response將資料傳回客戶端,提交給JavaScript來處理。各人認為,這種方法的一個不好的地方就是一個頁面只能完成一項功能,即使這個功能再簡單。

        ASP.NET MVC下的AJAX

        在Asp.Net MVC中,每一個Request都被route到一個Controller下的Action來處理,即一個Controller Class的一個方法。因此,如果在Action方法中完成業務邏輯,並把需要回傳的資料寫回到Response中,在客戶端再由JavaScript來處理這些回傳的資料,相信也能實現AJAX。基於這個想法,做了一個小小的Demo,實現了asp.net mvc下的ajax

        為了方便起見,客戶端JavaScript的功能就通過jQuery來實現了。

        頁面檔案:

        Html Code

        其中的$(document).ready(…..)是jQuery下的JavaScript實現,有興趣的朋友可以看看jQuery官網和中文社群。

        在來看一下Controller中的對應的Action方法:

                  public void SearchUserAjax()
                {
                    string uerid = Request["name"];
                    List lunchs = (
                                                from userlunch in repository.UserLunchLists.ToList()
                                                where userlunch.UserID == int.Parse(uerid)
                                                select userlunch
                                                ).ToList();
                    StringBuilder sb = new StringBuilder();
                    sb.Append("");
                    foreach (UserLunchList lunch in lunchs)
                    {
                        sb.Append("");
                    }
                    sb.Append("");
                    Response.ContentType = "text/html";
                    Response.Write(sb.ToString());
                }

        說穿了很簡單,就是把想要的資料直接寫到Response中就可以了,這裡為了方便起見,就是寫好了Table的格式。有一個地方需要注意的就是這個語句

        Response.ContentType = "text/html" 很重要,它告知JavaScript以何種格式來處理Response中的資料。

        核心內容就這麼簡單,呵呵。

        如果覺得寫JavaScript程式碼煩的話,可以使用extension方法,自定一個Html.Form或者其它的控制元件。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-434725/,如需轉載,請註明出處,否則將追究法律責任。

相關文章