2012-02-07 22 views
2

在創建ASP.NET MVC 3控制器時,我沒有找到一個好的解決方案/設計,我反覆遇到了一個問題。通常,我想創建一個搜索頁面,所以我創造我的控制器:「三階段操作」的控制器/操作流程?

public class MyEntityController: Controller { 
    public ActionResult Search() { 
     return View(); 
    } 
} 

這讓我顯示用戶在其中輸入搜索參數的視圖。當提交搜索時,我通常會創建一個動作來接收搜索參數,並進行實際的搜索:

[HttpPost] 
public ActionResult Search(SearchEditModel model) { 
    IList<IMyEntity> results = ...; // Do the actual search. 
    SearchResultsViewModel resModel = ...; // Convert it into a view model. 

    // NOW WHAT? 
} 

的問題是,我該怎麼辦?我需要將我的搜索結果發送到視圖以顯示它們。但是我不能僅僅調用return View(resModel);,因爲搜索視圖已經被用來讓用戶輸入搜索參數。這似乎不是一個非常罕見的情況,所以我猜測這樣做有一個「正確方法」。

回答

2

大衛,

我沒有真正看到在以類似的方式接近問題,你現在怎麼樣有問題。但是,我會使用包含搜索IList以及用於搜索的高級「參數」(即SearchEditModel)的視圖模型。這樣,您可以將搜索結果返回到視圖的較低部分,搜索參數在上部仍然可見。這可以帶來額外的好處,允許您在需要時進一步優化您的搜索。您當然必須修改httpget和httppost操作的簽名以適應此操作。

您的里程可能會有所不同當然...

0

準備視圖顯示你的搜索結果,並使用:

return View("YourViewName",resModel);