В мой контроллер, метод, который возвращает 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
? Тогда я мог бы просто получить значения оттуда для сетки ...
Thanks; Я подозревал, что это было по дизайну. Я просто не знал, как с этим бороться. Вероятно, я просто переброшу его в переменную сеанса, как вы предложили. Я приму ваш ответ, если это сработает. – sab669
Ну, ваше решение решило мою проблему ... но, к сожалению, имеет свои проблемы. Спасибо хоть! – sab669
4. Пропустите его назад и вперед с помощью скрытых полей с помощью HTTP Post, аналогично тому, как Viewstate работал в asp.net. –