65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 MVC + Post Enabled Forms 进行无 Cookie 会话

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.57/5 (5投票s)

2011年8月4日

CPOL

2分钟阅读

viewsIcon

26432

downloadIcon

395

使用 MVC 和启用 POST 表单的无 Cookie 会话。

介绍 

提供的代码允许程序员使用标准函数,以便在使用无 Cookie 会话和 MVC 时保持表单中的 POST 请求。

使用代码

将类添加到您的项目后,使用新函数就像以前一样简单。 

<% 
using (Html.BeginFormNoCookies("Claim")) { %>    
     //Form Contents here
<%} %>

表单 ID 是唯一的参数。从技术上讲,它不是必需的,除非启用了客户端验证。

工作原理

现有的 BeginForm 只是一个扩展,我也是这样实现的。事实上,我下载了 Microsoft 的 MVC2 FormExtension 的源代码。我更改了函数名称以避免混淆。为了解决由于一些现有方法是 System.Web.MVC 的内部方法而无法维护动态表单 ID 创建的问题,必须添加一个新的参数。接下来的主要部分是构造 URL 并始终包含会话 ID 以及任何操作、ID 或查询参数。

我创建了一个名为 CookielessHelper 的类。这是创建 URL 的地方。URL 围绕控制器构建。始终预期它采用以下格式:/{根信息}/{控制器}/{任何内容}?{查询}。会话 ID 始终在控制器之前添加,并且始终保留所有其他内容。

注意

目前此版本未启用路由修改。如果您使用任何其他函数,则不会添加会话 ID。所有其他函数目前都已注释掉,直到完全实现它们。我相信这并不困难,但我目前不需要它。

历史

  • 2011/8/4 - Linus Concepcion 指出我可以通过 HTMLHelper 获取控制器。谢谢!(删除了必需的视图页面参数。)
  • 2011/8/4 - 初始发布。
© . All rights reserved.