2

我正在使用需要多次登录的 MVC3 构建应用程序。第一个是标准形式的身份验证。另一个是管理部分的障碍,过期会话有第三个登录。

我想尽可能多地重用代码,但每个页面都有一些细微的变化。例如,在过期会话上,我们希望将用户名从可编辑的文本框中更改为仅显示过期会话的用户名。我们还想更改一些文本,例如标题为“会话已过期”。

最佳做法是什么?

想法1:我是否应该通过向控制器添加一些参数字符串和布尔标志来重新使用视图,这些参数将设置标题以及是否可以编辑?这也将允许我重用控制器。

想法 2:每个都有一个单独的控制器/视图。由于这些页面彼此相似,但与应用程序的其余部分不同,我将创建一个新的布局模板,然后将每个视图分开。

提前谢谢你们,你们太棒了!

4

3 回答 3

2

例如在过期会话中

使用相同的控制器并依赖于会话状态,构建正确的模型并返回特定的局部视图

public ActionResult sessionInfo() {

       if (sessionIsAlive){

          //build the model for the current user 
          return PartialView("logged", model);
       }

         //build the model for the session expired 
        return PartialView("expired", model);

}
于 2012-07-10T15:33:06.780 回答
1

我认为这是个人喜好以及您想让代码变得多么复杂。

就个人而言,我看到这种情况发生最多的方式是在模型中设置一个带有某种可编辑标志的视图,该标志从控制器传递给视图(但是你通过视图或部分视图呈现它)。

于 2012-07-10T15:27:15.220 回答
0

在我看来,必须直接为模型做决定,如果模型发生变化,在每个窗口上遵循标准我会尝试为每个模型做我的观点强类型。现在关于动作,在这里我将尝试调用相同的动作,然后根据收到的模型做出决策。

于 2012-07-10T15:33:25.843 回答