从MVC3中的Index传递ViewModel的内容到Details页面

时间:2012-02-29 15:27:39

标签: asp.net-mvc

在我的控制器bazController内,我将返回bazViewModels页面上显示的Index列表。

现在,当我点击Details中每个项目的bazViewModel链接时,我是否可以将该特定视图模型item传递到Details页面?

我可以通过网址从我的视图模型传递必要的数据,但我不愿意。

谢谢你!

2 个答案:

答案 0 :(得分:0)

通常,您只会向“详细信息”操作发送某种ID,例如链接看起来像/ products / details / 15,以显示ID为17的产品的详细信息。然后,详细信息操作将使用id作为密钥来获取所需的数据,例如从数据库或会话中获取。

但是,您可以创建自己的ModelBinder,以便自动执行此操作:

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();
    }

答案 1 :(得分:0)

使用TempData将信息从一个页面传递到另一个页面,这将在该页面上使用后清除

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