In meinem Controller, die Methode, die die Ansicht zurück, initialisiert auch einige Werte für einige Klasse-Niveau Eigenschaften:Wert immer zurückgesetzt zwischen Ajax-Aufrufen in Controller-
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);
}
Zusätzlich gibt diese Methode, die aufgerufen wird, binden von Daten an ein Gitter auf der Seite:
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
auf true
gesetzt wird, wenn die Ansicht erstellt wird, aber wenn die Daten an das Netz gebunden ist isSuggested
wird auf false
aus irgendeinem Grunde.
My Gitter so ist wie in einem Rasiermesser Ansicht definiert:
@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")
Das Bit ist, was an den Controller und das Verfahren bezieht sich auf die Steuerung zu rufen. Also, es ruft das zweite Codefragment oben auf.
Ich muss auf zwei separate Instanzen meiner Klasse Controller
zugreifen, aber ich weiß nicht, wie ich dieses Problem lösen kann. Wie kann ich das machen? Wie könnte ich mein Gitter eine Referenz des Objekts übergeben lassen? Dann könnte ich nur die Werte von dort für das Raster bekommen ...
Danke; Ich vermutete, dass dies Absicht war. Ich wusste einfach nicht, wie ich damit umgehen sollte. Ich werde es wahrscheinlich einfach in eine Session-Variable werfen, wie Sie es vorgeschlagen haben. Ich werde deine Antwort akzeptieren, wenn das funktioniert. – sab669
Nun, Ihre Lösung hat mein Problem gelöst ... hat aber leider eigene Probleme. Trotzdem danke! – sab669
4. Führen Sie es über versteckte Felder mit einem HTTP-Post hin und her, ähnlich wie ViewState in asp.net arbeitete. –