在ASP.NET MVC中,Controller和Model完全无状态?

时间:2013-12-08 18:56:44

标签: asp.net asp.net-mvc

我试图用这个要求创建一个简单的hello world asp.net mvc app:它有一个输入框,它是数字。用户可以更改数字值,如果值是文本而不是数字,则网页应显示输入的上一个数字。

问题是我无法这样做,因为控制器和模型似乎是无状态的。我对吗?即使是这样简单的案例我是否需要设置数据库?

2 个答案:

答案 0 :(得分:2)

控制器和模型是无状态的,您可以通过涉及会话或任何其他服务器端持久性机制来解决这个问题,但为什么要这么麻烦呢?

相反,使客户端有状态 - 添加一些验证输入的javascript代码,并在验证失败时恢复以前的值。然后,只有在成功完成客户端验证后,才将表单发布到服务器。

答案 1 :(得分:1)

当然你可以在MVC中使用Sessions,只需在类的属性中声明它(不仅是readonly,你可以改变它):

namespace NamespaceName {
    [SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
    public class ClassName : Controller {

        public ActionResult MethodName(string param) {
        // CODE HERE
        }

    }
}

然后你就可以访问HttpContext.Session。