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

Я генерирую значения в одном методе действия контроллера.Как я могу использовать те же значения переменных в другом результате действия от того же контроллера?

Например:

Контроллер A - Результат действия 1:

 public ActionResult CalculationsONE()
{       
        dynamic CalcModel = new ExpandoObject();
        int var1 = //Value calculated here
        int var2 = //Calculation

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

        return View(CalcModel);

}

Контроллер A - Результат действия 2:

  public ActionResult CalculationsTWO()
{       
   // I want to use var1 and var2 from the CalculationsONE in 
     this action result

 }

Ответы [ 3 ]

4 голосов
/ 27 декабря 2011

Просто передайте их как параметры строки запроса:

public ActionResult CalculationsTWO(int var1, int var2)
{       
    ...
}

, и для вызова действия CalculationsTWO из представления, отображаемого в действии CalculationsONE, вы можете создать ссылку, подобную этой:

@model CalcModel
@Html.ActionLink(
    "call calculations2", 
    "calculationstwo", 
    "somecontroller" 
    new { 
        var1 = Model.Var1, 
        var2 = Model.Var2 
    }
)

О, и я бы рекомендовал вам использовать строго типизированные модели представления вместо динамических объектов, передаваемых в представление.ViewBag динамично, но, честно говоря, используйте модели просмотра.Вы будете счастливее: -)

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

В качестве альтернативы я хотел бы сохранить ваши переменные в сеансе.

EG:

this.Session["variable"]


this.HttpContext.Session["variable"]

или передать их через ViewData ["string"] в поле зрения и вКонтроллер для Request.FormData ["VariableName"], чтобы связать его обратно

. Другой способ - добавить данные в модель для представления и при обратной передаче в вашем контроллере связать модель обратно в переменную

.:

// postback action
public ActionResult RebindMethod(ModelToUse rebindToMyModel){

}

Где определение модели:

public class ModelToUse{
    public string MyVariableToPersist{get;set;}
}
0 голосов
/ 27 декабря 2011

Если это два отдельных действия, ответ Дарина Димитрова, приведенный выше, должен сделать это иначе, если вы хотите, чтобы оба результата в одном вызове ресурса, создали два приватных метода в вашем контроллере, которые выполняют calc1 и calc2, и возвращают результаты в представление ...

results: {
   calc1: ....
   calc2: ....
}

вы можете использовать классовые переменные, которые вы используете для отслеживания значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...