如何在视图中维护值,当我做回发MVC

本文关键字:MVC 视图 维护 | 更新日期: 2023-09-27 18:13:20

我的页面中有一些控件,当页面第一次加载时,值从数据库中获取并放置在相应的控件中。当我再次单击另一个按钮时,它将转到控制器并从数据库获取值并绑定gridview。我的模型中有三个类,第二类和第三类包裹在第一类中。当我绑定gridview中的第二个类时,第一个类为空,所有值都变为空,只绑定gridview。如何解决这个问题

如何在视图中维护值,当我做回发MVC

HTTP是无状态的,除非您将当前模型存储在会话之类的持久介质中,否则它将在发回时丢失!

如果我没理解错你的问题的话!

当你第一次绑定你的类时,把它们放在一个Session变量中,然后返回给视图。然后,当你第二次发布时,当你点击另一个按钮,确保在actionmethod中检索会话变量,然后将新值分配给这个会话变量中的类,而不是仅仅返回新的,认为旧的仍然在那里。

如果我明白你在问什么,那么你可以将它存储在TempData。TempData将一直保存到下一个请求。

public class YourView
{
    public ActionResult Index()
    {
        string firstName = "Stephen";
        TempData["FirstName"] = firstName;
        return View();
    }
    public void ButtonClicked()
    {
        string firstName = (string)TempData["FirstName"];
    }
}

请注意,临时数据只持续到下一个请求。所以为了让这个工作,在你的视图被加载之后,下一个调用必须是ButtonClicked调用。

控制器是无状态的,所以如果你需要持久一些东西,你必须让它有点hackish和真正丑陋的像这个TempData["FirstName"] = TempData["FirstName"]在每一个地方,你的控制器将被调用,直到你需要使用该值。就像我说的,我不建议(或使用Session的情况下),但如果你需要,那么这是最安全的方式,在我看来。