你应该在MVC中的viewbag或viewmodel中存储returnurl吗?

时间:2015-10-06 11:07:46

标签: c# asp.net-mvc-4

我们使用Post / Redirect / Get方法,并且通常为我们的每个Actions创建一个特定的ViewModel,但ReturnUrl总是让我烦恼。什么是保留ReturnUrl的首选方法?

  1. 将其添加到ViewBag中,然后重定向,例如

    if (!ModelState.IsValid)
    {
        return RedirectToAction("login", new { ReturnUrl = returnUrl });
    }
    
    1. 将其存储在ViewModel中并输出一个隐藏字段,其值为?当我们使用ModelStateToTempData时,它会毫不费力地传输值。
    2. 我问的唯一原因是因为默认的Microsoft模板在使用ViewModels的操作上使用ViewBag

1 个答案:

答案 0 :(得分:1)

你可以将它存储在两者中,问题是应该你吗?

我会说这取决于项目的复杂程度,有多少人会使用你的代码并扩展它?

另一个观点是概念 - 你的模型是否真实地封装了ReturnUrl,或者你是否将ReturnUrl标记为它,'只是因为'?

如果是后者,那么我会使用ViewBag。