如何从2个不同的视图调用变量

时间:2016-12-14 09:25:44

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

我试图创建一个webApp并且我有一个冲突,因为我有一个模型,我在控制器中调用,但每次我在同一个控制器的视图之间切换时,我的模型实例重置并采取再次初始值。

DataTable dt;

public AdminUsers()
{
    dt = (new Userdb()).GetUsers();
}

public ActionResult Admin()
{
    ... // do whatever with dt before showing the results
    return View(this.dt);
}

public ActionResult Results()  // dt resets with the initial values
{
    return View(this.dt);
}

如何在修改后保留视图之间的值?

4 个答案:

答案 0 :(得分:3)

为此,您可以使用Session

当你初始化它时(例如在你的AdminUsers()方法中)

Session["dt"] = (new Userdb()).GetUsers();

然后检索你的值,但总是检查会话是否为空:

If(Session["dt"] != null)
{
  DataTable myTable = (DataTable) Session["dt"];
  //Do whatever you need with your dt.....
}

答案 1 :(得分:0)

您可以使用Session ...会话将允许您存储当前会话的数据,然后您将能够在该会话中的任何视图中访问该数据...

auto x = [int&]/[long]

然后在您的视图中访问该会话,将其转换为DataTable并使用它..

Session["data"] = dt;

答案 2 :(得分:0)

您不应该将dt变量设为实例变量,而是在每个操作中加载它并更新Post上的记录,这样您将始终获得最新的新数据。 建议不要使用会话,因为它限制了应用程序的可伸缩性。

此外,您应该使用POCO来传输数据而不是DataTable

答案 3 :(得分:-1)

你可以将它放入ViewData:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<nav class="navbar navbar-default">
            <div class="container" style="margin-left:50px;">
                <ul class="nav navbar-nav">
                    <li>
                        <a href="">
                            Startseite
                        </a>
                    </li>
                    <li>
                        <a href="ueber-mich/">
                            Über&nbsp;mich
                        </a>
                    </li>
                    <li>
                        <a href="#anker">
                            Referenzen
                        </a>
                        <ul>
                            <li><a href="maler-und-tapezierarbeiten/">Maler- und Tapezierarbeiten</a></li>
                            <li><a href="fenster-und-tuerenanstrich">Türen und Fensteranstrich</a></li>
                            <li><a href="spachtel-und-lasurtechniken/">Spachtel- und Lasurtechniken</a></li>
                            <li><a href="fassadenanstrich/">Fassadenanstrich</a></li>
                            <li><a href="">Dekorputze</a></li>
                            <li><a href="renovierung/">Renovierungen</a></li>                   
                        </ul>
                    </li>
                    <li>
                        <a href="impressum/">
                            Impressum
                        </a>
                    </li>
                </ul>
            </div>
</nav>