2012-10-22 47 views
2

我認爲這比其他任何問題都更「風格」。「正確」的方式將控制權傳遞給新頁面?

我有一個MVC應用程序,其中包含一個主頁面,用戶輸入搜索條件以及一個列表頁面,其中顯示與條件匹配的項目列表。

當用戶請求的主網頁上的搜索,MainPage.cshtml有這樣的代碼來調用ListPageController生成新的一頁:

var ParamString = 
    "Param1=" + Param1 
    + "+Param2=" + Param2 
    + "+Param3=" + Param3 
    + "+Param4=" + Param4 
    + "+Param5=" + Param5; 
window.open(encodeURI("/ListPage/ShowList?" + ParamString), "_self"); 

這裏是ListPageController.cs爲ShowList代碼:

public ActionResult ShowList 
(
    String p_Param1 
, String p_Param2 
, String p_Param3 
, String p_Param4 
, String p_Param5 
) 
{ 
    ListPageModel M = new ListPageModel; 
    M.Param1 = p_Param1; 
    M.Param1 = p_Param2; 
    M.Param1 = p_Param3; 
    M.Param1 = p_Param4; 
    M.Param1 = p_Param5; 
    return View("ListPage", M); 
} 

ListPage.cshtml然後通過使用指定參數的jQuery Ajax調用獲取數據。

正在使用window.open與一串參數「正確」的方式來做到這一點?如果有大量的參數而不是5個,那麼這會不會使URL變得相當大?

或者,例如,窗口打開的調用應該在ListPageController中調用,例如jQuery .post調用?

+1

如果參數+ url可能超過2000個字符,您應該創建一個隱藏表單並提交它發佈到頁面(如果您希望結果成爲新頁面)。除非您將.post的結果專門添加到當前頁面,否則'.post'不會引入新內容。 –

+0

還記得過去,當您將查詢字符串的搜索字詞傳遞給某個帶有SQL查詢的腳本嗎?而且你會生成一些表格標籤或其他東西,而且它們都可以工作,每個人都會知道發生了什麼事情?我懷念那些日子。 CGI腳本,表格,SQL ......你知道你在哪裏。那是編程,孩子們。現在它是QVC或所有模型。無論如何。晚餐吃什麼?又是晚上的意大利麪嗎?護士!護士!屏幕! – izb

+1

此問題似乎是脫離主題,因爲它屬於另一個StackExchange站點:codereview.stackexchange.com – Ryley

回答

1

我不認爲你需要使用jQuery。畢竟,當前實現的最終結果是完全從服務器重新加載頁面。

最簡單的和在我看來最乾淨的方式來做到這一點將是使搜索字段在方法「POST」和動作「/ ListPage/ShowList」的老式形式。沒有JavaScript需要!

0

在這種情況下沒有必要使用JQuery。您可以簡單地通過使用HtmlHelper.Action並在其中傳遞輸入的參數來調用ShowList操作。這也會讓你更容易。

相關問題