在Javascript/jquery中不会修改C#属性值

Asl*_*fry 6 javascript c# asp.net-mvc jquery

我在Controller的构造函数中初始化一个属性.

public BookController()
{
  SessionProvider.SessionLoadSceanrio = false;
}
Run Code Online (Sandbox Code Playgroud)

我有一个Action方法,它在按钮单击事件上再次重置属性.

public ActionResult LoadScenario(int bookId)
{
  SessionProvider.SessionLoadSceanrio = true;
  // remaining code
  return Json(ScenarioId, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

以下javascript代码在我的视图中,单击按钮时会调用该代码.

var BookHandler = {
  $("#btnLoadScen").click(function (e) {
                $.ajax({
                    url: "@Url.Action("LoadScenario", "Book")",
                        dataType: 'json',
                        type: 'POST',
                        data: {
                            'bookId': BookHandler.getBookId()
                        },
                        success: function (response) {
                            var scenarioId = response;
                            var isLoadScenario = "@Portal.Presentation.Web.Planning.MVC.App_Start.SessionProvider.SessionLoadSceanrio";
                            //otherproperties
                            window.open("@Url.Action("Index", "BookScenario", new {loadScenario = "_loadScenario"}).replace('_loadScenario', isLoadScenario), tabId);

                        },
                        error: function () {
                        }
                    });

                });
}
Run Code Online (Sandbox Code Playgroud)

我的问题是当我单击按钮时,Controller中的属性值更改.但它在我的javascript代码中没有变化.请参阅开发人员工具的屏幕截图.

抓屏

有没有人对此有所了解?

dus*_*88c 3

您正在使用剃刀语法。然后最初加载页面,设置值,这些值是字符串,不再是变量。那么你就无法再次更新会话值。

请从 AJAX 调用获取会话值并将其设置为您的变量。