Send some variable from View to View


0
Здравейте колеги,
Имам следния проблем:
Имам форма с ViewModel Patient в която след натискане на бутон ми се зарежда нова модална форма в която зареждам partial с друг ViewModel Examination, който е свързан с първия. Това е ОК и работи.
Но това което искам, а не мога да направя, са две неща:
1) След въвеждане на Examination-a и затваряне на модалния прозорец данните в основния да не се губят. За съжаление не зная друг начин за преминаване от View към View освен RedirectToAction, а по този всичко въведено изчезва
2) Освен данните, които трябва да си останат, искам да предам и Id-то на току що създаденото Изследване, за да го запиша към Пациента.
Пробвах да обединя двамата модела в един ViewModel, за да работя само с едни данни, но за отваряне на модалния прозорец ползвам Ajax.ActionLink, а с него не успях да предам данни от модела към контролера.
Ще бъда благодарен ако някой се е сблъскал с подобно нещо и има решение, пък в крайна сметка, ако не може, ще се откажа от модалния прозорец...
Поздрави!



Отговори



1

В BaseController-a пишеш:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            SessionState = new SessionState();
 
            if (filterContext.HttpContext.Session != null && filterContext.HttpContext.Session["SessionState"] != null)
                SessionState = filterContext.HttpContext.Session["SessionState"] as SessionState;
 
            base.OnActionExecuting(filterContext);
        }
 
        protected override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            if (filterContext.HttpContext.Session != null)
                filterContext.HttpContext.Session["SessionState"] = SessionState;
            base.OnActionExecuted(filterContext);
        }
 
Като new SessionState() ти е нестатичен клас в който си пазиш данни валидни само за дадения потребител. Всеки посетител на сайта ти си генерира уникална за него си сесия. Този код прехвърля данните от класа към сесията и обратно в началото и края на Action-a.
 
В контролера в единия Action просто даваш примерно SessionState.SelectedIndex = 8; В другия Action където ти трябва си го вземаш.

от saykor (8845 точки)


0
Благодаря за идеята! SessionState класа аз ли трябва да си го създам или е системен? Защото не го открива, трябва ли да добавя допълнителна референция?
Работи супер! Мерси!

от penjurov (1466 точки)

0
Ти си го създаваш. Може и по друг начин да се казва. Аз така си го влача от години това име на тоя класс :)

от saykor (8845 точки)