2017-06-08 25 views
0

我使用ASP.Net MVC 5来构建一个Web应用程序并使用jQuery。我有一个单一的页面应用程序,我使用索引操作设置会话变量并显示视图。此外,我使用jQuery来调用Get和Post Ajax请求来在同一个控制器上执行操作。问题在于访问Sesssion变量。我在索引操作中设置会话变量,并尝试访问由jquery调用的post操作中的相同变量。请建议,如果有什么,我失踪。MVC中使用jQuery Ajax的会话变量

我的控制器类是类似下面:

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

你可以用TempData的感谢尝试 –

回答

0

Session变量是单页,这意味着如果没有加载或刷新页面也不会改变不变。 因此,在Ajax提交的成功中,您必须手动放置会话的值。 如果<span id="demoid">@session["client_name"]</span>

然后

 success: function(data) 
     { 
      $("#demoid").html(data); // here data is the value for the session 
     }