Лучший способ создать глобальные переменные, доступные как клиенту (jquery), так и серверу в ASP. NET MVC - PullRequest
0 голосов
/ 11 апреля 2020

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

Лучший способ, которым я Придумали так далеко, чтобы передать мою модель вокруг. Когда я go из контроллера для просмотра, я передаю модель обычным способом:

return View(model);

Внутри моей страницы cs html я загружаю модель в локальный jquery объект:

var model = @Html.Raw(Json.Encode(Model));

Когда пользователи вносят изменения, я могу отразить эти изменения в моем jquery объекте:

model.Name=$("#name").val();

Затем, когда я go перехожу на новую страницу, я передаю объект jquery обратно на свой сервер. боковая модель с использованием json.

jquery

//convert model to json string
var strJson = JSON.stringify(model); 

//call another page and pass json string
window.location.href = "/Home/Test/?strJson=" + strJson;

контроллер

public ActionResult Test(string strJson)
{
    //convert json string back to model object
    ProjectModel model = new ProjectModel();
    model = new JavaScriptSerializer().Deserialize<ProjectModel>(strJson); 

    return View(model);
}

Этот метод работает довольно хорошо, но мне интересно, есть ли лучший способ , Я пытался использовать объект Session, но у меня возникли проблемы с доступом к данным объекта Session из jquery. Я написал 2 ajax вызовов SetSession и GetSession для чтения и записи переменных в объект Session сервера, но GetSession вызывает у меня головную боль из-за того, что он асинхронный. Так что, если я сделаю это, то выйдет из строя:

jquery

//calls a function that uses ajax to get the Session variable
var x = GetSession("Name");

alert(x); //undefined because this statement get executed before x is set

Так что я застрял на данный момент, используя эту идею (объект Session).

Кто-нибудь знает лучший способ создания глобалов, доступных из jquery и контроллера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...