【问题标题】:how to pass the multiple values from one view to another view using session mvc如何使用会话 mvc 将多个值从一个视图传递到另一个视图
【发布时间】:2013-12-28 17:01:13
【问题描述】:

在我的第一页中,我列出了与该计划相关的金额列。如果我单击一个列,它会重定向到另一个页面。在该页面中,我想显示我之前单击的数量。我以前从未使用过会话。现在我试过了。但它总是只显示单个金额..我不知道如何为多个值创建会话..

控制器

        Session["rs360"] = "Rs. 360";
        Session["rs1000"] = "Rs. 1000";
        Session["rs1500"] = "Rs. 1500";

查看

 <div><%:Session["rs360"] %></div>

实际视图(Index.Cshtml)

 <div id="rs360">
    <span class="font18">Rs.360</span> 
 </div>

<a href="<%: Url.Action("Payment", "Home") %>"><img src="../../Content/Images/Subscribe now on click.png" class="btn" onclick="return sms_confirm1()" /></a>

<div id="rs1000">
  <span class="font18">Rs.1000</span> 
 </div>

<a href="<%: Url.Action("Payment", "Home") %>"><img src="../../Content/Images/Subscribe now on click.png" class="btn" onclick="return sms_confirm1()" /></a>

当点击按钮时,它会转到另一个名为 Payment

的视图
 <td>
   <a class="callpickupcash" href="<%: Url.Action("ElectronicTransfer", "Home") %>"><img src="/Content/Images/ebanking.png" class="Featured-plan"></a>
 </td>

当点击上面的这个按钮时,它会打开一个弹出菜单...在那个菜单上我应该显示金额值..

这里只有我通过了我已经在顶部声明的以下会话

<div><%:Session["rs360"] %></div>

在这里我给出了会话变量,所以我的结果显示为 360。但是当我点击 1000 时它应该会改变.. 怎么做?

【问题讨论】:

    标签: asp.net-mvc session view


    【解决方案1】:

    我通过使用 localStorage() 函数找到了我的问题的答案..

    我通过单选按钮来获取类似的值

    <%:html.radiobutton("smscount",500,true)%>
    

    jQuery

    <script type="text/javascript">
       function sms_confirm() {
    
           var amount = $("input:radio[name=smscount]:checked").val();
           localStorage.setItem("smscount", amount);
           if (r == false) {
               return false;
           }
    
       }
    

    重定向页面

    在这里,我将值显示到文本框中。所以我把文本框 id..

    $(function () {
              var textbox = $('#Amount');
              var checkValue = localStorage.getItem("smscount")
              textbox.val(checkValue);
    
          });
    

    【讨论】:

      【解决方案2】:

      如果您没有将会话用于其他任何事情,我建议您对于这个问题您不需要会话。您可以简单地将点击的数量传递给您使用该链接调用的操作方法,然后将该数量合并回您传递给第二个视图的模型中。您可以通过使用 viewData 来做到这一点,或者通过将视图强类型化到包含该信息的视图模型来更好地做到这一点。

      编辑

      好的。让我看看我是否做对了。渲染的第一个视图上的链接:

      Url.Action("Payment", "EmployerVas")
      

      在 EmployerVas 中调用 Payment 方法,该方法呈现一个视图 (view2),该视图包含一个用以下方式呈现的按钮:

      Url.Action("ElectronicTransfer", "EmployerVas","Employer")

      这将打开一个弹出菜单,您希望在第一个视图中单击的值显示在弹出菜单中。如果这就是您正在尝试做的事情,并且没有对您正在做的事情做出太多改变并将您转移到基于 viewModel 的系统,我会更改以下内容:

       Url.Action("Payment", "EmployerVas", new{amount="360"})
      

      在 EmployerVas 控制器中更改 Payment 方法以接受 int 或 long 类型的输入参数或任何满足您需要的参数。

      然后,如果需要,您可以将其存储在会话中并将其传递给 view2,然后在 view2 中再次更改链接以传递该值(或者如果您想使用存储在会话中的值,则将链接保留为是):

      Url.Action("ElectronicTransfer", EmployerVas","amountToSHow=sessionOrViewDataPassedValue")
      

      现在,由于该值在会话中,您可以使用它,或者您可以更改 ElectronicTransfer 方法以接受与上述相同类型并命名为 amountToShow 的输入值,然后您可以将其传递给弹出窗口。

      【讨论】:

      • 我从来没有存储过这个数量。我想动态地获取它。而且我没有点击那个数量..我只是点击那个数量的按钮。
      • 同样的事情。只需将金额传递给该按钮调用的方法即可。你不需要存储它。只需将它从一个视图传递到另一个视图。
      • 我对这个概念很陌生。如果你举个例子会更好。
      • 请发布您的 cshtml 文件,尤其是带有按钮的视图,我会尽我所能帮助您。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多