tldr>一旦選擇了客戶,所有其他控制器如何在客戶的「上下文」中始終執行其操作,而無需手動傳遞ID?ASP.NET MVC:在頁面之間傳遞價值
我想弄清楚'正確'的方式是處理一個整個控制器(或更多)都依賴於前一個控制器的想法的情況。例如,假設您正在構建某種客戶管理系統。會有各種各樣的客戶功能,可能位於CustomerController上。但是當你進入訂單管理時,你可能想要一個OrderController。
如果你只有一個OrderController,你的方法可能會是這樣的:
公衆的ActionResult編輯(串號){...}
的ID是訂單的ID,對不對?當我需要回到客戶那裏時,我有些失落。這就像發生在顧客身上的所有行爲的「背景」一樣。你可以通過不斷添加客戶ID到行動(URL)的做到這一點:
http://site.com/Orders/Edit/1234?customerId=abc
但這似乎它變得相當繁瑣要抓住這個值和干擾到它的每一個動作。有像Session這樣的選項,但似乎馬虎。
什麼是正確的方法來做到這一點?
你爲什麼認爲使用會話是馬虎?聽起來像是一個完美的用例。 – Necros 2010-08-18 02:05:16
我想我只是通過這種方式查看會話。是的,它會在這裏工作,但是如果你嘗試擴展等等,那麼會出現問題。我通常以避免使用全局變量的方式來避開會話 - 它們可以工作,但它們有它們自己的問題。 – Jim 2010-08-18 02:27:04
使用會話的另一個重要因素是用戶無法爲任何子頁面添加書籤,因爲它們需要創建該上下文。通過在URL中嵌入您需要的所有內容,用戶可以直接回到他們想要的任何頁面。 – Jim 2010-08-19 02:57:28