在我的控制器內部,bazController
,我返回要在Index
頁面上顯示的bazViewModels
列表。將ViewModel的內容傳遞給MVC3中索引的詳細信息頁面
現在,當我點擊bazViewModel
的Details
鏈接,每個項目上是有辦法,我可以特定視圖模型item
傳遞給Details
頁面?
我可以通過URL從我的視圖模型傳遞必要的數據,但我不想。
謝謝!
在我的控制器內部,bazController
,我返回要在Index
頁面上顯示的bazViewModels
列表。將ViewModel的內容傳遞給MVC3中索引的詳細信息頁面
現在,當我點擊bazViewModel
的Details
鏈接,每個項目上是有辦法,我可以特定視圖模型item
傳遞給Details
頁面?
我可以通過URL從我的視圖模型傳遞必要的數據,但我不想。
謝謝!
通常,您只會將某種ID發送到詳細信息操作,例如,該鏈接看起來像/ products/details/15,以顯示產品的詳細信息,ID爲17.然後,Detail操作將使用id作爲關鍵字(例如從數據庫或會話)獲取所需的數據。
但是,您可以創建自己的模型綁定器,使這個自動發生,沿着這些線路:
public class MyModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var val = bindingContext.ValueProvider.GetValue("id");
var id = int.Parse(val.AttemptedValue);
return LoadFromDatabase(id);
}
}
所以你的行動可能看起來像:
public ViewResult Details(MyModel model)
{
return View();
}
使用TempData
從一個傳遞信息頁面到其他頁面,在使用該頁面後將被清除
編輯: 也可以使用session
但確保會話使用後清除。
我的問題是其中一個字段是未知的,直到索引頁面加載和'usertype'基於訪問頁面的用戶帳戶計算。 'usertype'由於其可變性質而不存儲在數據庫中。 – messedupfir 2012-02-29 15:33:28
然後你可以將它存儲在會話中。無論是在固定的密鑰下還是在動態創建的密鑰下,您都可以通過詳細信息查找適當的值。 – 2012-02-29 15:42:31