如何使用session mvc将多个值从一个视图传递到另一个视图

时间:2013-10-25 05:13:07

标签: asp.net-mvc session view

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

控制器

        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>

点击该按钮后,会转到另一个名为付款

的视图
 <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它应该改变..怎么做?

2 个答案:

答案 0 :(得分:2)

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

我通过了radiobuttons的值,如

<%: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);

      });

答案 1 :(得分:1)

如果您没有使用会话,我建议您,对于这个问题,您不需要会话。您只需将单击的金额传递给您使用该链接调用的操作方法,然后将该金额合并到您传递给第二个视图的模型中。您可以通过使用viewData来实现这一点,甚至可以通过将视图强类型化为包含该信息的视图模型来实现。

修改

行。让我看看我是否做对了。使用以下项呈现的第一个视图上的链接:

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

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

Url.Action(“ElectronicTransfer”,“EmployerVas”,“雇主”)

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

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

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

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

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

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