熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET 的MVC結構之AJAX

2022-06-13   來源: .NET編程 

  ASPNET Web Form下的AJAX

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

  ASPNET MVC下的AJAX

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

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

  頁面文件

  Html Code

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

  在來看一下Controller中的對應的Action方法                   public void SearchUserAjax()
                {
                    string uerid = Request[name];
                    List<UserLunchList> lunchs = (
                                                from userlunch in repositoryUserLunchListsToList()
                                                where userlunchUserID == intParse(uerid)
                                                select userlunch
                                                )ToList();
                    StringBuilder sb = new StringBuilder();
                    sbAppend(<table id=LunchList style=display:none><tr><th>User</th><th>Time</th><th>Price</th></tr>);
                    foreach (UserLunchList lunch in lunchs)
                    {
                        sbAppend(<tr><td> + lunchUserUserName + </td><td> + lunchTimeToShortDateString() + </td><td> + lunchCost + </td></tr>);
                    }
                    sbAppend(</table>);
                    ResponseContentType = text/html;
                    ResponseWrite(sbToString());
                }

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

  ResponseContentType = text/html 很重要它告知JavaScript以何種格式來處理Response中的數據

  核心內容就這麼簡單呵呵

  如果覺得寫JavaScript代碼煩的話可以使用extension方法自定一個HtmlForm或者其它的控件


From:http://tw.wingwit.com/Article/program/net/201311/13307.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.