2012-02-29 78 views
0

在我的控制器内部,bazController,我返回要在Index页面上显示的bazViewModels列表。将ViewModel的内容传递给MVC3中索引的详细信息页面

现在,当我点击bazViewModelDetails链接,每个项目上是有办法,我可以特定视图模型item传递给Details页面?

我可以通过URL从我的视图模型传递必要的数据,但我不想。

谢谢!

回答

0

通常,您只会将某种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(); 
    } 
+0

我的问题是其中一个字段是未知的,直到索引页面加载和'usertype'基于访问页面的用户帐户计算。 'usertype'由于其可变性质而不存储在数据库中。 – messedupfir 2012-02-29 15:33:28

+0

然后你可以将它存储在会话中。无论是在固定的密钥下还是在动态创建的密钥下,您都可以通过详细信息查找适当的值。 – 2012-02-29 15:42:31

0

使用TempData从一个传递信息页面到其他页面,在使用该页面后将被清除

编辑: 也可以使用session但确保会话使用后清除。

相关问题