當前位置:編程學習大全網 - 源碼下載 - 為什麽瀏覽器不能動態加載mvc的jquery?

為什麽瀏覽器不能動態加載mvc的jquery?

盡管可能,但建議不要使用Action。

更好的方法是使用“過濾屬性”。也許妳的帖子的動作形式如下:

[HttpPost]//也許妳沒這麽用,也許妳用了。。

公共視圖結果我的操作(int頁)

那麽,妳應該知道(或者能夠)這樣做:

[HttpGet]

公共視圖結果我的操作(int頁)

MyAction的形參頁將由ASP.NET MVC的“值提供者”提供,它將根據優先級從下面的列表中為page綁定壹個值:

請求。形式

RouteData。價值觀念

請求。查詢字符串

請求。文件

這意味著妳的條件可以完全建立在

對補充問題的答復:

我明白妳的意思。您希望在不暴露URL中的條件的情況下獲得請求,對嗎?如果是這樣,那麽有壹個很好的方法可以直接使用Pro ASP.NET MVC 2框架(第二版)第4章或第5章中分頁示例的思想。

總的想法是每個頁面對應壹個URL。這樣做的壹個好處是,當客戶看中了某個頁面(比如說第三個頁面)的內容,就在頁面上點擊右鍵,選擇“加入收藏夾”。當他幾天後從收藏夾打開收藏夾鏈接,就會得到第三頁的數據。這在Web表單中很難用簡單的方式做到。

遠的不說,為了實現這種方法,需要維護壹個屬性為CurrentPageIndex的視圖模型,在配置Route時增加壹個CurrentPageIndex項。。

宿舍要斷電了。如果妳不想下載那個電子書(當然我推薦妳下載),明天繼續。。

希望這將是最終版本的補充:

以下是Steven Sanderson的《Pro ASP.NET MVC 2框架(第二版)》中的例子和我的壹些解釋(以下解釋是基於妳對C#的壹些新的或舊的語法的理解):

整個思路就是把“分頁”做成壹個組件,有利於重用。

具體來說,首先給HtmlHelper壹個擴展方法(擴展方法可以參數化相關文檔,比如MSDN),這個方法返回壹個方法可以是

公共靜態類分頁幫助器

{

公共靜態MvcHtmlString頁面鏈接(this HtmlHelper html,PagingInfo pageInformation,

Func & ltint,string & gtpageUrl)

{

StringBuilder result = new StringBuilder();

for(int I = 1;我& lt= pageInformation。總頁數;i++)

{

tag builder tag = new tag builder(" a ");

標簽。MergeAttribute("href ",pageUrl(I));

標簽。InnerHtml = I . ToString();

if (i == pageInformation。當前頁面)

{

標簽。addcss class(" selected ");

}

結果。AppendLine(標簽。ToString());

}

返回MvcHtmlString。創建(結果。ToString());

}

}

從方法體可以理解,這個方法會為需要分頁的每壹頁數據提供壹個鏈接,這樣每壹頁數據都會對應壹個URL。就像我之前說的,這會是壹個很好的用戶體驗。

我們來看看視圖是如何調用這個方法實現分發的。下面是名為List的視圖(List是強類型視圖,其類型為ProductsListViewModel,後面會解釋)調用該方法實現分頁的代碼:

& lt%: Html。頁面鏈接(模型。PagingInfo,i = & gt網址。Action("List ",new))% & gt;

如您所見,在調用擴展分頁方法時,我們傳入了兩個參數,壹個是Model。PagingInfo,另壹個是lambda表達式(請參考相關文檔,如MSDN)I = & gt;網址。操作(“列表”,新建).

在看第壹個參數模型之前。PagingInfo,我們來看看Model的類型定義:

公共類產品列表視圖模型

{

public IList & lt產品& gt制品

公共分頁信息

公共字符串當前類別

}

這個類型有三個屬性,這裏我們只需要關心它的第二個屬性,PagingInfo(名稱相同,希望不要混淆)PagingInfo類型的屬性。PagingInfo類型定義如下:

公共類PagingInfo

{

Public int CurrentPage //當前頁碼

公共整數總計//總數據記錄

Public int ItemsPerPage //每頁的記錄數

公共int總頁數//總頁數

{

得到

{

return (int)(數學。上限((小數)total items/items perpage));

}

}

}

這是我們分頁時關心的信息,也是我們調用擴展分頁方法時需要傳遞的過去的信息。當然,這些信息不會憑空而來,而是需要我們自己去設置。

我舉的例子是Steven Sanderson的“Pro ASP.NET MVC 2框架(第二版)”提供的帶有視圖列表的分頁產品的例子。需要註意的是,當用戶從瀏覽器請求/List時,他並沒有請求頁面list.aspx(雖然它是我們顯示給用戶的),他請求的是壹個名為List的動作。這意味著我們輸出用戶需要的List.aspx所需要做的所有準備工作(當然不是業務邏輯)都將在壹個名為List的動作中進行,定義如下:

public view結果列表的參數默認值(string category,int page = 1/* C #(參考C# 4的。

可選參數)*/)

{

var products toshow =(category = = null?產品存儲庫。產品:產品存儲庫。產品。其中(x = & gtx .類別==類別));

var viewModel =新產品列表視圖模型

{

產品=產品展示。Skip((page - 1) * PageSize)。采取(頁面大小)。ToList(),

PagingInfo = new PagingInfo,

CurrentCategory =類別

};

返回視圖(viewModel);

}

可以看出,當用戶第壹次請求列表時,他很可能沒有給出壹個頁面參數(當然,妳可以在妳的應用程序中有妳的選擇),所以我們給了它壹個默認值。如果妳用的不是C#4.0,那麽妳可以把int page = 1改成[DefaultValue(1)] int page,這裏它們的效果是壹樣的。

以下是實現分頁的全過程的闡述:

不管用戶是否在第壹個請求中取page參數,在Action List執行過程中,Action List都會構造壹個ProductsListViewModel對象,這正是分頁方法需要的信息。當動作列表成功執行返回視圖(viewModel),ViewList。aspx將接收動作列表返回的viewModel,並將其作為視圖的模型屬性。

當視圖List.aspx執行到

還應該指出的是

最後還有壹個配置,就是以如下形式添加壹個路由項:

路線。地圖路線(

空,

"/Page ",

新的,

新);

這樣就可以滿足妳的需求,而不用QueryString。。

當然,如果有必要,使用AJAX,用戶會獲得更好的體驗。

如果不明白,請補充問題。希望能幫到妳。

如果對您有幫助,請將此標記為最佳答案。謝謝妳。

  • 上一篇:PAAS平臺到底是什麽意思啊?
  • 下一篇:初探DeepEarth控件
  • copyright 2024編程學習大全網