2015-09-03 2 views
1

Используя C#, .Net, MVC5, AngularJS и выпадающий элемент Select2, dd находится в верхней части макета, где пользователь может выбрать проект. Элемент управления select2 заполняется как указано here.Как сохранить выпадающее значение страницы при загрузке страницы при использовании MVC, C# и AngularJS?

Я создал глобальное Угловое обслуживание следующим образом:

var app = angular.module('app', ['kendo.directives', 'ngResource', 'ngRoute', 'ngSanitize', 'ui.select2']); 

    app.factory('globalContainer', function() { 
     var globalContainer = {}; 

     globalContainer.dashboardGlobals = { 
      userContext: Object(null), 
      currentProject: Object(null), 
      projectList: Object(null), 
      testString: "Global Test String!!!" 
     }; 

     return globalContainer; 
    }); 

Установка значений в контроллере следующим образом:

app.controller('projectListController', ['$rootScope', '$scope', '$log', 'abstractDataFactory', 'customUIFunctions', 'globalContainer', 
    function ($rootScope, $scope, $log, abstractDataFactory, customUIFunctions, globalContainer) { 
     var vm = this; 
     vm.dashboardGlobals = globalContainer.dashboardGlobals; 
... 


    vm.dashboardGlobals.projectList = result.value; 
// make a restful call w/ data to set value on server side 

Вопрос заключается в том, что, когда я загрузить новую страницу, значение были сброшены. Я предполагаю, что если это был Angular SPA, это не было бы проблемой, однако это не SPA.

Я могу начать фоновый вызов контроллера, чтобы заполнить пользовательский контекст на сервере (UserContext.Identity.CurrentProject), но отказался от этого в пользу попытки углового.

По существу, когда DD изменен, я хочу установить глобально доступный объект на стороне клиента (я уже могу это сделать на стороне сервера).

Каков наилучший способ приблизиться к этому, учитывая текущий технический стек?

Предложения, пожалуйста?

+2

сохранить значение либо на сервере, либо на localStorage – charlietfl

ответ

0

Посмотрите на https://github.com/browserstate/history.js/, если вы хотите сохранить его на стороне браузера/клиента.

В противном случае вам придется либо отправить информацию обратно на сервер, либо заполнить ее из модели или ViewBag.

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