Передавать значения между двумя действиями в контроллере - PullRequest
0 голосов
/ 27 декабря 2011

Действие контроллера 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);
}

Вид: значения сверху отображаются на странице просмотра .. вот так.

<%@ 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 получают нулевые значения из представления.

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Это на самом деле не хорошая или плохая практика; Я просто нахожу, что использование HTML-помощников для действительно простых ссылок является излишним. В вашей ситуации вы, вероятно, в конечном итоге добавили эти значения в анонимный объект в качестве атрибутов в вашей ссылке, а не в URL.

0 голосов
/ 28 декабря 2011

Я считаю, что ваше соглашение об именах неверно, попробуйте

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<CalcView>" %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...