我在第一个视图中有一个gridPanel。如果单击此视图中的按钮,则所选行将显示在另一个视图中。我需要将这些行的信息发送到服务器,以便我可以在单击按钮的操作中加载一些额外的数据。 要执行该操作,我应该使用Session而不是TempData或ViewBag / ViewData,因为我不知道用户何时会单击该按钮。如果我弄错了,请纠正我。
我的代码是这样的:在客户端使用AJAX我调用一个动作方法来设置会话变量:
Ext.Ajax.request({ url: 'Examples/SetSelectedStations', params: { selectedStations: stationsStr} });
在SetSelectedStations
控制器中设置了Session["selected"]
,因此控制器操作就像:
public ViewResult SetSelectedStations(string selectedStations)
{
Session["selected"] = selectedStations;
return View();
}
我想在另一个名为Session["selected"]
的控制器中获取ShowSelectedStations
:
public Ext.Net.MVC.PartialViewResult ShowSelectedStations(string containerId)
{
string ss = Session["selected"] as string;
// Here ss is null !!!
}
问题是Session["selected"]
在第二个控制器中始终为空!
我应该在其他地方定义Session [“selected”]吗? 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>
和global.asax:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace WIS_3_0
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Examples", action = "Ex3", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}