如何在MVC中保留状态

时间:2015-08-23 07:06:20

标签: asp.net-mvc

我有一个asp.net mvc5 Web应用程序,有5页。最后三页的信息从前两页传递。所以这就像我的前两页是动态的,前两个是根据前两个变化的 我的程序只做以下事情 我在第一页填写信息,通过邮件请求点击提交按钮,在第二页填写信息,从第二页点击提交按钮。其余页面仅显示结果  但是当我从浏览器表单第二页按回按钮,在第一页更改某些值并按下提交按钮时出现问题,我丢失了第二页的所有数据。我希望第二页保持其以前的状态。
我真的不知道它有多难。那么有些人可以告诉我如何解决这个问题吗? 在此先感谢。这里只是示例代码来说明这是第二页

<form action="thirdpage.cshtml" method="post">
          MARKET VALUE OF HOUSE 2nd page:
         <input id="MVOH" type="number" step="any" name="MVH" /><br/><br/>
             
           MORTGAGE OWING 2nd page:
           <input id="MO" type="number" step="any" name="MOwing" /><br/><br/>
            MORTGAGE REPAYMENT 2nd page
            <input id="MPPM" type="number" name="MP" />
            <select id="Sel">
                 <option value="0">Per week</option>
                  <option value="1">Per fortnight</option>
                   <option value="2">Per Month</option>
              </select><br/><br/>
            <div>  
              
              <input id="next" type="submit" value="Income Expenses &raquo;"/>   
          </div>  
   </form>

第一页是

 <form action="secondpage.cshtml" method="post">
           
            
                   MARKET VALUE OF HOUSE:
                    <input id="MVOH" type="number" step="any" name="MVH" /><br/><br/>
             
                    MORTGAGE OWING:
                    <input id="MO" type="number" step="any" name="MOwing" /><br/><br/>
                    <td>MORTGAGE REPAYMENT</td>
                    <td>
                        <input id="MPPM" type="number" name="MP" />
                        <select id="Sel">
                            <option value="0">Per week</option>
                            <option value="1">Per fortnight</option>
                            <option value="2">Per Month</option>
                        </select><br/><br/>
            <div>  
              
                <input id="next" type="submit" value="Income Expenses &raquo;"/>
                
               
            </div>
           
        </form>

请注意,我只提供了部分代码,因为我的网页太大了。

2 个答案:

答案 0 :(得分:0)

执行此操作的唯一方法是在按键/更改事件中将更改实时传输到服务器。您可以使用ajax调用。 用户第二次导航到第二页后,您可以填写他之前输入的值

答案 1 :(得分:0)

首先如果您正在处理ASP.NET MVC我强烈建议使用HTML Helpers来创建您的视图{{1} }或HTML.TextBox()等,并将这些元素与您的模型绑定,以便在每次请求时,将根据请求HTML.Label()的类型更新值。

其次按浏览器的后退/前进按钮会显示最后一个缓存页面,由于该页面的值可能已过时,我建议您拥有自己的下一个上一个按钮并启动获取请求相同。

如果您对浏览器的按钮感到困扰,您可以相应地检查页面引荐来源并在每个帖子请求时进行检查