如何使用会话 MVC 将多个值从一个视图传递到另一个视图



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

控制器

        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 时,它应该会改变。.怎么做?

我通过使用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);
      });

如果您不将会话用于其他任何事情,我建议您不要使用会话来解决此问题。 您只需将点击的金额传递给使用该链接调用的操作方法,然后将该金额合并回要传递给第二个视图的模型中。 您可以使用 viewData 来做到这一点,甚至可以通过将视图强类型化到包含该信息的视图模型来做到这一点。

编辑

还行。让我看看我是否做对了。第一个视图上呈现的链接:

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

在 EmployerVas 中调用一个付款方法,该方法呈现一个视图 (view2),其中包含一个呈现如下按钮:

Url.Action("电子转账", "雇主","雇主")

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

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

更改 EmployerVas 控制器中的付款方式,以接受 int 或 long 类型的输入参数或任何符合您需求的参数。

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

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

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

最新更新