ASP.NET MVC用于不同控制器方法的通用模型

时间:2013-09-04 06:36:44

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

我很难理解MVC的行为方式。在我的Controller类中,我创建了一个模型并将其初始化为主ActionMethod。之后,我调用另一个控制器方法,结果是模型为空。那是为什么?

现在似乎我只能使用它们一次将数据库信息传递给视图。是否有必要始终修改/查询数据库?我知道在大多数情况下这样做是有意义的,但我想将这些部分分开。

修改 这是一些代码:

public class TestController : Controller {
   TestModel model;

   public ActionResult Index() {
      model = new TestModel();
      return View(model);
   }

   public ActionResult OtherMethod {
      // Here I would like to access/modify the previously created model, but it is null
      return View();
   }
}

2 个答案:

答案 0 :(得分:0)

您应该使用Html helpers在视图中绑定模型的属性

或者只是使用@ Html.EditorForModel()帮助器。它将为整个模型创建UI和绑定

答案 1 :(得分:-1)

控制器的默认生命周期是“每个请求”,这意味着在每个HttpRequest上都会创建一个新的TestController实例。

您可以通过创建自定义控制器工厂来更改此行为,但我不建议这样做,我建议您使用TempData集合。

请参阅http://msdn.microsoft.com/en-us/library/dd394711(v=vs.100).aspx