我在 Controller 的构造函数中初始化一个属性。
public BookController()
{
SessionProvider.SessionLoadSceanrio = false;
}
我有一个操作方法,可以在按钮单击事件时再次重置属性。
public ActionResult LoadScenario(int bookId)
{
SessionProvider.SessionLoadSceanrio = true;
// remaining code
return Json(ScenarioId, JsonRequestBehavior.AllowGet);
}
以下 javascript 代码在我的 View 中,单击按钮时将调用它。
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 () {
}
});
});
}
我的问题是当我单击按钮时, Controller 中的属性值发生变化。但它在我的 javascript 代码中没有改变。请查看开发人员工具的屏幕截图。
有人知道吗?
最佳答案
您正在使用 Razor 语法。然后最初加载页面,设置值,这些值是字符串,不再是变量。那么您将无法再次更新 session 值。
请从 AJAX 调用中获取 session 值并将其设置为您的变量。
关于javascript - C# 属性值不会在 Javascript/jquery 中被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31334390/