我正在使用ASP.Net MVC 5来构建Web应用程序并使用jQuery。我有一种单页面应用程序,我使用索引操作设置会话变量并显示视图。此外,我使用jQuery在相同的控制器上调用Get和Post Ajax请求。问题在于访问Sesssion变量。我在索引操作中设置会话变量,并尝试访问jquery调用的post操作中的相同变量。请告知我是否遗漏了一些东西。
我的Controller类如下所示:
public class HomeController : Controller
{
public async Task<ActionResult> Index()
{
var obj = new SomeObject();
Session["UserName"] = Request.QueryString["UserName"];
return View(obj);
}
//Invoked by jQuery Ajax method..
[HttpPost]
[Route("home/GetResponse/")]
public async Task<JsonResult> GetResponse(string message)
{
var userName = Convert.ToString(Session["UserName"]);// Getting Null
//Perform some stuff and return json
}
}
答案 0 :(得分:0)
会话变量在单页中是常量,这意味着如果未加载或刷新页面,它将不会更改。
因此,在Ajax提交成功中,您必须手动放置会话的值。
如果<span id="demoid">@session["client_name"]</span>
然后
success: function(data)
{
$("#demoid").html(data); // here data is the value for the session
}