C#属性值不';无法在Javascript/jquery中进行修改

C#属性值不';无法在Javascript/jquery中进行修改,javascript,c#,jquery,asp.net-mvc,Javascript,C#,Jquery,Asp.net Mvc,我在控制器的构造函数中初始化属性 public BookController() { SessionProvider.SessionLoadSceanrio = false; } 我有一个操作方法,可以在按钮单击事件中再次重置属性 public ActionResult LoadScenario(int bookId) { SessionProvider.SessionLoadSceanrio = true; // remaining code return Json(Scen

我在控制器的构造函数中初始化属性

public BookController()
{
  SessionProvider.SessionLoadSceanrio = false;
}
我有一个操作方法,可以在按钮单击事件中再次重置属性

public ActionResult LoadScenario(int bookId)
{
  SessionProvider.SessionLoadSceanrio = true;
  // remaining code
  return Json(ScenarioId, JsonRequestBehavior.AllowGet);
}
下面的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 () {
                        }
                    });

                });
}
我的问题是,当我单击按钮时,控制器中的属性值会发生更改。但是在我的javascript代码中它没有改变。请查看开发人员工具的屏幕截图。



有人对此有线索吗?

以下代码只有在您从服务器获得视图后才会进行评估,在ajax调用后不会重新评估

var isLoadScenario = "@Portal.Presentation.Web.Planning.MVC.App_Start.SessionProvider.SessionLoadSceanrio";
为了达到预期目的,您需要在回复中返回SessionLoadSceanrio

你可以这样做:

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

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


请从AJAX调用中获取会话值并设置为变量

我看到控制台中有一个错误。上面写了什么?你粘贴的代码和截图不一样。您确定运行时引用的代码相同吗?thushar。。这是css错误。。我们可以忽略它。迈克,代码是一样的。开发者工具显示了它的价值。这就是我认为它看起来不同的地方。我没有在这里列出一些属性来增加可读性。但它实际上在代码中,重新加载页面。我做到了。但同样的结果。