2016-07-07 5 views
0

В мой контроллер, метод, который возвращает View также инициализирует несколько значений для некоторых свойств уровня класса:Значение получать сброс между Ajax вызовов в контроллере

private string igc = String.Empty; 
private string igcCode = String.Empty; 
private bool isSuggested = false; 

public ActionResult Codes(Codes objCodes) 
{ 
    try 
    { 
     FillDropDowns(objCodes); 
     igc = String.Empty; 
     if (objICDCodes.FromWhere.IndexOf("MedicalInfo-Suggested") >= 0) 
     { 
      igc = objCodes.FromWhere.Remove(0, "MedicalInfo-Suggested-".Length); 
      igcCode = igc.Substring(0, igc.IndexOf("-")).Trim(); 
      objCodes.ICGCode = igcCode; 
      isSuggested = true; 
     } 
    } 
    catch (Exception ex) 
    { 
     //logging error 
     ElmahLogUtility.ErrorException(ex); 
    } 

    return View(base.GetViewPath("Codes"), objCodes); 
} 

Кроме того, есть такой метод, который вызывается в привязки данных к сетке на странице:

public JsonResult GetSelectedCodesInfo(List<SearchField> searchFields, GridDataSourceRequest request) 
{ 
    //creating the instance of DataSourceResult. 
    DataSourceResult dataSourceResult = null; 
    try 
    { 
     // Creating the instance of CommonBLL to load the values. 
     CommonBLL objCommonBLL = new CommonBLL(); 

     if (isSuggested) 
     { 
      searchFields.Add(new SearchField() { ElementName = "aIGCode", Value = igcCode }); 
      searchFields.Add(new SearchField() { ElementName = "aFor", Value = "EtiologicDiagnosis" }); 
     } 

     // Getting the Codes information and storing in the DataSource Result. 
     dataSourceResult = objCommonBLL.GetSelectedCodesInfo(searchFields, request); 
    } 
    catch (Exception ex) 
    { 
     //Logging the Exception 
     ElmahLogUtility.ErrorException(ex); 
    } 

    // Returning the Result. 
    return Json(dataSourceResult, JsonRequestBehavior.AllowGet); 
} 

isSuggested получает значение true, когда вид создан, но когда данные привязаны к сетке isSuggested устанавливается в false по какой-то причине.

Моя сетка определяется видом Razor так:

@Html.Grid("CodesSelectionGrid").ReadSource("Controller", "GetSelectedCodesInfo").OnGridDataBound("AssignCodeValues").Lazyload(true).EnableGrouping(false).EnableSorting(true).PageSize(10).Height("390px").Width("610px").EnablePaging(true).EnableFiltering(false).EnableMultiSelect(true).SelectionMode(SelectionMode.Single, "GetSelectedCodeDetails").RowSelection(GridRowSelection.None).ShowToolBar(true).SelectionCSSClass("icd-editable-cell").PageButtonCount(3) 

Это .ReadSource("Controller", "GetSelectedCodesInfo") бит, что относится к контроллеру и способу на контроллере, чтобы позвонить. Таким образом, он вызывает второй фрагмент кода выше.

Должен быть доступ к двум отдельным экземплярам моего класса Controller, но я не знаю, как решить эту проблему. Как я могу это сделать? Как я могу передать свою сетку ссылку на объект Codes? Тогда я мог бы просто получить значения оттуда для сетки ...

ответ

1

Это ожидаемое поведение. isSuggested - это переменная уровня класса. Каждый раз, когда вы делаете запрос Http, будет создан новый экземпляр вашего контроллера. Это означает, что переменная будет инициализирована как false. Помните, Http является безстоящим :)

Если вы хотите сохранить переменное значение между несколькими вызовами HTTP, вам необходимо его сохранить. У вас есть различные варианты, как

  1. Упорство в таблицу базы данных и читать, что во втором вызове
  2. запись в файл в диске и читать, что во втором вызове
  3. Сохранить сеанса пользователя и читать от этого при втором вызове
+0

Thanks; Я подозревал, что это было по дизайну. Я просто не знал, как с этим бороться. Вероятно, я просто переброшу его в переменную сеанса, как вы предложили. Я приму ваш ответ, если это сработает. – sab669

+0

Ну, ваше решение решило мою проблему ... но, к сожалению, имеет свои проблемы. Спасибо хоть! – sab669

+0

4. Пропустите его назад и вперед с помощью скрытых полей с помощью HTTP Post, аналогично тому, как Viewstate работал в asp.net. –

 Смежные вопросы

  • Нет связанных вопросов^_^