另一个问题是伙计们。
关于会话变量。 我有一个输入字段(从我之前的一个问题中看到) 我会在这里放一些代码,以便你们可以看到
function getBaseUrl() {
return "@Url.Content("~/paging")";
}
function LocationSearch(baseUrl) {
window.location = getBaseUrl() + "/LocationSearch?searchstring=" + (document.getElementById('vestigingen').value);
}
这是我的javascript函数调用我的控制器函数。
<input type="text" class="search-query span3" id="vestigingen">
<a class="zoekbtn" href="javascript:void(0);" onclick="LocationSearch();">zoeken</a>
这两个用于将我的搜索字符串传递给我的控制器。
这是我在Paging控制器中的功能
public ActionResult LocationSearch(int? page, string searchstring)
{
if (searchstring != null)
{
Session["location"] = searchstring;
}
var searchVestigingen = ziekenhuisRepository.GetZiekenhuisList(); //sloppy! get rid of implicity
int currentPageIndex = page.HasValue ? page.Value - 1 : 0;
try
{
if (char.IsDigit(Session["location"].ToString(), 0))
{
searchVestigingen = ziekenhuisRepository.FindZipcodeVestigingen(Session["location"].ToString());
}
else
{
searchVestigingen = ziekenhuisRepository.FindLocationVestigingen(Session["location"].ToString());
}
if (searchVestigingen.Count() <= 0)
{
return View("NoResults");
}
}
catch (Exception)
{
return View("NoResults");
}
return View(searchVestigingen.ToPagedList(currentPageIndex, DefaultPageSize));
}
public ActionResult ListSearch(int? page, string searchstring)
{
if (searchstring != null)
{
Session["location"] = searchstring;
}
do stuff
return View(etc. etc. )
}
正如您所看到的,我正在使用会话变量来浏览我的页面列表(我使用了MvcPaging包)。
有两个函数我想使用相同的会话变量。
这是我的问题,我如何获得他刚插入的相同值以用于我的其他功能(反之亦然,如果他先按下另一个按钮)?
答案 0 :(得分:1)
会话,按设计,可用于整个应用程序。无论您使用哪个页面,都可以以相同的方式访问它。
所以你可以在一个类或方法中设置一个值:
Session["location"] = searchstring;
然后从另一个类或方法访问它:
searchstring = (string)Session["location"];
有关详细信息,请参阅MSDN。
答案 1 :(得分:0)
Session对象就像是特定用户和会话的全局引用。根据需要使用它,只需从项目的任何位置调用Session["location"]
即可。您是否尝试过它并且不起作用或者您只是不确定安全性?
你可能需要像这样调用它:
var location = System.Web.HttpContext.Current.Session["location"].ToString();
如果用户关闭浏览器,那么知道会话变量将为空也可能是好的。除非您将其保存在客户端或某种类型的数据库中,否则就是这样。