【问题标题】:Pass values between two actions in a controller在控制器中的两个动作之间传递值
【发布时间】:2011-12-27 19:41:05
【问题描述】:

MVC 控制器动作 1:在视图页面上显示值。

MVC 控制器动作 2:由同一视图页面上的动作链接触发 - 将视图页面上显示的值(在动作 1 中计算的值)作为参数并运行自己的逻辑。

两者都是同一个控制器的一部分。现在我可以通过操作 1 成功显示值。现在用户点击执行动作 2 的动作链接。但我无法成功地将这些值传递回控制器动作 2。

控制器动作 1:

 public ActionResult CalculationsONE()
{       
    var CalcModel = new CalcViewModel();

    int var1 = //Value calculated here
    int var2 = //Calculation

    CalcModel.Var1= var1;
    CalcModel.Var2= var2;

    return View(CalcModel);
}

View : 上面的值显示在视图页面上.. 像这样。

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<CalcModel>" %>

<table>
    <tr><td>First Value:</td><td><%=Model.Var1%></td></tr>
    <tr><td>Second Value:</td><td><%=Model.Var2%></td></tr>
</table>

<%=Html.ActionLink("StringTitle", "Action2", "Controller", new { var1 = Model.Var1,    

 var2=Model.Var2})%>

现在当用户点击动作链接时,值应该被传递给控制器​​的动作 2。但那没有发生..请帮忙。

动作2代码:

   public ActionResult Action2(int? var1, int? var2)
    {
       //Other logic/calculations.
    }

var1 和 var2 从视图中获取空值..

【问题讨论】:

  • 您尝试过低技术解决方案吗? &lt;a href="/Controller/Action2?var1=@Model.Var1&amp;var2=@Model.Var2"&gt;StringTitle&lt;/a&gt;?
  • 没有。我如何用非剃刀语法写这个?我会试试这个。
  • 提供的 sn-p 就是一个例子。 =D
  • 当然。我明白那个。我尝试使用相同的格式..但似乎无法正确使用语法..我使用的是 aspx 表示法而不是 razor。
  • 哦,对不起,我的例子完全脑死了!应该是&lt;a href="/Controller/Action2?var1=&lt;%= Model.Var1 %&gt;&amp;var2=&lt;%= Model.Var2 %&gt;"&gt;StringTitle&lt;/a&gt;

标签: asp.net-mvc controller


【解决方案1】:

这确实不是一个好或坏的做法;我只是发现对非常简单的链接使用 HTML Helpers 是矫枉过正的。在您的情况下,您可能最终将匿名对象中的这些值作为属性附加在链接上,而不是在 url 中。

【讨论】:

    【解决方案2】:

    我相信你的命名约定是错误的,试试

    <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<CalcView>" %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-11
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      相关资源
      最近更新 更多