Asp.net mvc 在页面之间传递和存储对象
我想在这个问题上得到一些建议。基本上,为了简单起见,我有两个页面,第二个页面完全依赖于第一个页面 假设主页是一个搜索页面,第二个页面是一个查看页面 该站点处理XML请求,最终目标是将XML请求保持在最低限度,因为每个请求都有点慢。我曾考虑过使用会话,但我在过去遇到过一些问题,会话是在用户之间随机混合的,我只是通过将IIS中的回收过程更改为一个非常小的时间范围来控制这些问题,所以我想知道是否还有其他方法。我尝试了TempData,但它在一个请求后过期,因此在视图页面上刷新页面似乎不可能。还是这样 无论如何,我们有一个搜索页面,它有,比如说,视图页面需要的5个属性,但是在视图页面上发出XML请求只需要2个属性 e、 g 搜索页面包含: 身份证件 名称 城市 电子邮件 身高 查看页面需要搜索页面中的以下内容才能完成xml请求: 身份证件 名称 电子邮件 查看页面显示搜索页面中的所有信息,以及XML响应中的所有内容 我在搜索页面中的链接只有url中的ID,因此第二页上的XML请求需要名称和电子邮件。不确定是否可以不进行会话 我试过的是: 将搜索结果存储在TempData中。这样,当有人单击“查看”链接时,查看页面将加载搜索结果,如下所示:Asp.net mvc 在页面之间传递和存储对象,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我想在这个问题上得到一些建议。基本上,为了简单起见,我有两个页面,第二个页面完全依赖于第一个页面 假设主页是一个搜索页面,第二个页面是一个查看页面 该站点处理XML请求,最终目标是将XML请求保持在最低限度,因为每个请求都有点慢。我曾考虑过使用会话,但我在过去遇到过一些问题,会话是在用户之间随机混合的,我只是通过将IIS中的回收过程更改为一个非常小的时间范围来控制这些问题,所以我想知道是否还有其他方法。我尝试了TempData,但它在一个请求后过期,因此在视图页面上刷新页面似乎不可能。还是这样
var viewPage = SearchResults.Where(w => w.ID == id).FirstOrDefault();
然后,ViewModel通过从viewPage获取名称和电子邮件、发出XML请求、显示响应以及viewPage中的其他所需详细信息来呈现页面
它与tempdata一样工作。数据只在第一次请求时存在,在页面刷新时消失。会话是另一种选择,但还有其他选择吗
很抱歉出现这样的文字墙:为什么不在搜索页面中使用更多标准技术,如指向将执行搜索的控制器操作的标记:
@using (Html.BeginForm("search", "somecontroller", FormMethod.Get))
{
... some input fields for your search criteria
<button type="submit">Search</button>
}
我在表单上使用了GET方法,它允许用户将结果页添加到书签中,稍后再返回。刚刚快速查看了您的问题,我记得我曾经做过一个类似的项目。我通过使用非对称加密算法对值e-mail、name等进行加密并将其作为QueryString值来解决这个问题。另外,请记住TempData也在使用会话。
public ActionResult Search(SearchModel model)
{
var results = ....
return View(results);
}