2012-04-19 78 views
0

之間傳遞,我試圖做到這一點:參數動作

public ActionResult Index(List<Client> Client) 
{ 
    if (Client != null) 
     return View(Client); 

    return View(db.Client.ToList()); 
} 

[HttpPost] 
public ActionResult Search(string cnpj) 
{ 
    List<Client> Client = db.Client // here it finds one client 
     .Where(c => cnpj.Equals(c.Cnpj)) 
     .ToList(); 

    return RedirectToAction("Index", Client); 
} 

行動搜尋之後,它進入指數,但客戶端參數始終是空..

有人知道這是爲什麼?


我做到這一點,工作原理:

public ActionResult Index(string cnpj) 
{ 
    if (!string.IsNullOrEmpty(cnpj)) 
    { 
     List<Client> clients = db.Client 
     .Where(c => cnpj.Equals(c.Cnpj)) 
     .ToList(); 

     return View(clients); 
    } 

    return View(db.Client.ToList()); 
} 
+0

是否已進行了確認查詢實際上是返回的東西嗎? – JasCav 2012-04-19 16:55:59

+0

是的,我確定。當我調試它時得到一個客戶端。 – MuriloKunze 2012-04-19 17:01:40

+0

我決定,謝謝。 – MuriloKunze 2012-04-19 17:13:47

回答

0

Ÿ着簡單地調用該函數,而不是重定向的? 調用這個從Search行動

Index(Client) 

什麼重定向發生的是,那麼瀏覽器發送一個新的請求到服務器,因此Clientnull因爲302 HTTP代碼發送到與重定向URL瀏覽器瀏覽器不能發回它。 編輯: -
在這種情況下閱讀註釋 後u有兩種選擇
1.one是再拍Index行動,所以現在更改參數類型爲字符串ULL能夠調用直接
2.使用TempData() 。這是一個由MVC提供的特殊商店,它可以存儲一段時間的對象,並在第一次訪問時丟失它的值。
簡單的客戶端列表添加到臨時數據TempData.Add("Client",Client),然後在行動中使用指數作爲TempData["Client"]

+0

但是,如果我這樣做,它會返回一個搜索URL ..它不存在 – MuriloKunze 2012-04-19 17:00:44

+0

我試圖創建兩個操作索引(一個字符串參數,另一個沒有參數),但它不起作用:當前請求控制器類型'ClienteController'的動作'索引'在以下動作方法 – MuriloKunze 2012-04-19 17:11:32

+0

之間是不明確的,我決定,謝謝。 – MuriloKunze 2012-04-19 17:16:17