我知道我的问题是基本的,但我需要一些回复,因为我在网上尝试了很多解决方案,但我仍然遇到了一些错误。
我在第一个视图中有一个gridPanel。如果单击此视图中的按钮,则所选行将显示在另一个视图中。我需要将这些行的信息发送到服务器,以便我可以在单击按钮的操作中加载一些额外的数据。 要执行该操作,我应该使用Session而不是TempData或ViewBag / ViewData,因为我不知道用户何时会单击该按钮。如果我弄错了,请纠正我。
我的代码是这样的:在客户端使用AJAX我调用一个动作方法来设置会话变量:
Ext.Ajax.request({ url: 'Examples/SetSelectedStations', params: { selectedStations: stationsStr} });
在SetSelectedStations
控制器中我意识到Session["slectedStations"]
总是为空,行为就像从未设置过一样。这是我的控制器动作:
public ViewResult SetSelectedStations(string selectedStations)
{
Session["slectedStations"] = selectedStations;
string ss = Session["slectedStations"] as string;
// Here ss is null !!!!!!
return View();
}
我应该在其他地方定义Session [“slectedStations”]吗? web.confg文件中是否有特殊配置?
请注意我的web.config中的sessionState是这样的:
<sessionState mode="Custom" customProvider="PgSessionStateStoreProvider">
<providers>
<clear />
<add name="PgSessionStateStoreProvider" type="NauckIT.PostgreSQLProvider.PgSessionStateStoreProvider" enableExpiredSessionAutoDeletion="true" expiredSessionAutoDeletionInterval="1800000" enableSessionExpireCallback="false" connectionStringName="AspSQLProvider" applicationName="WebSite1" />
</providers>
</sessionState>