C# 使用ASP.NET MVC3处理注册向导的正确方法是什么?

C# 使用ASP.NET MVC3处理注册向导的正确方法是什么?,c#,.net,authentication,asp.net-mvc-3,C#,.net,Authentication,Asp.net Mvc 3,我正在尝试制作一个3页的注册向导,但我不确定如何在页面之间传递数据 起初,我尝试使用return-RedirectToActionNew、Authentication、newUser;, 其中newUser是用户的实例,它包含初始的第一页信息,这是他们的OpenId标识符和提供者提供的任何额外元数据 当我这样做时,我注意到所有存在的数据都在查询字符串头中: Request URL:http://localhost:1200/Account/New?UserId=0&OpenIds=Sys

我正在尝试制作一个3页的注册向导,但我不确定如何在页面之间传递数据

起初,我尝试使用return-RedirectToActionNew、Authentication、newUser;, 其中newUser是用户的实例,它包含初始的第一页信息,这是他们的OpenId标识符和提供者提供的任何额外元数据

当我这样做时,我注意到所有存在的数据都在查询字符串头中:

Request URL:http://localhost:1200/Account/New?UserId=0&OpenIds=System.Collections.Generic.List%601%5BSystem.String%5D
Request Method:GET
Status Code:200 OK
这让我担心它可能会受到严重的攻击/滥用,特别是如果openId标识符存在,更不用说openId值不正确,它没有正确序列化IList


有人有什么建议吗?

我会将这些信息保存在会话对象中

会话[UserObject]=MyUserObject

然后用


var myUser=Session[UserObject]作为MyUserClass

我会将此信息保存在会话对象中

会话[UserObject]=MyUserObject

然后用

var myUser=Session[UserObject]作为MyUserClass

对于RedirectToAction,您需要传递对象和路由名称:

return RedirectToAction("New", "Authentication", new { id=newUser});
另请参见

,了解需要传递对象和路由名称的重定向操作:

return RedirectToAction("New", "Authentication", new { id=newUser});

另请参见

在完成所有3个步骤之前,是否可以使用ViewData或ViewBag对象进行临时存储?

在完成所有3个步骤之前,是否可以使用ViewData或ViewBag对象进行临时存储?

在中,它详细讨论了此主题,并提供了如何在向导步骤之间来回传递数据的工作示例

我会买这本书,看看里面的解决方案

编辑:

如评论中所述,阅读第13章第477页的样本。它涵盖了你的问题

为什么这是有效的回答,而不是评论

浏览无数线程的人会发现如何解决向导问题的直接参考

注释很容易被试图找到问题解决方案的紧张开发人员忽略。

中,详细讨论了此主题,并提供了一个如何在向导步骤之间来回传递数据的工作示例

我会买这本书,看看里面的解决方案

编辑:

如评论中所述,阅读第13章第477页的样本。它涵盖了你的问题

为什么这是有效的回答,而不是评论

浏览无数线程的人会发现如何解决向导问题的直接参考


注释很容易被压力很大的开发人员忽略,他们试图找到问题的解决方案。

我最终使用TempData在请求之间存储数据。我还使用了TempData。当我需要显示一些错误消息时,请继续确保它对于一个错误处理请求是粘性的。

我最终使用TempData在请求之间存储数据。我还使用了TempData。当我需要显示一些错误消息时,请确保它对于再次请求错误处理是粘性的。

@Qui-并使用什么在注册页面之间来回反弹?重定向操作仍应在此处工作:在会话中保存对象,重定向,在新控制器中重新读取。如果操作可以读取会话中的所有状态,则不需要将参数传递给操作。如果不知道完整问题,则很难判断。我假设在这三个阶段中,您正在逐步建立信息以编译用户对象?如果是这样的话,你会在你踏出一个台阶的时候对检索到的对象进行检查。因此,如果地址详细信息是第三步内容,并且出现在第二步中,则从对象中删除它们,如果neccessary@qui-正确。我正在建立用户对象。那些临时数据呢?这是一个选项吗?很容易打破标签或后退按钮。在会话中存储向导的状态很少是个好主意。@Qui-并使用什么在注册页面之间来回跳转?重定向操作仍应在此处工作:在会话中保存对象,重定向,在新控制器中读回。如果操作可以读取会话中的所有状态,则不需要将参数传递给操作。如果不知道完整问题,则很难判断。我假设在这三个阶段中,您正在逐步建立信息以编译用户对象?如果是这样的话,你会在你踏出一个台阶的时候对检索到的对象进行检查。因此,如果地址详细信息是第三步内容,并且出现在第二步中,则从对象中删除它们,如果neccessary@qui-正确。我正在建立用户对象。那些临时数据呢?这是一个选项吗?很容易打破标签或后退按钮。在会话中存储向导的状态很少是一个好主意。s-无法这样做。。因为我还没有保存/保留用户详细信息。我还在收集数据。。在我可以保存它并获取UserId.s之前-那是li
nk也很有帮助:s-不能这样做。。因为我还没有保存/保留用户详细信息。我还在收集数据。。在我保存它并获取UserId.s之前,这个链接也非常有用:Sh!T我有那本pdf格式的书。是时候检查一下了:链接到一本书并不能回答他的问题。即使这本书有一个详细的例子,确切地说明了如何解决这个问题?你不可能是认真的。是的,他是认真的。你可以把它作为一个评论发布。指着一本书说读它不是答案。这几乎等同于让他用谷歌搜索它。如果你要发布答案,你至少可以提供一个例子。否则,将其保留为注释。尽管如此,这是一个很好的资源。我从头到尾读了这本书,在第477页的章节中有一个很好的使用向导的例子13@Chevex-谢谢,伙计。我试着找到他在里面处理巫师的地方,但是找不到!T我有那本pdf格式的书。是时候检查一下了:链接到一本书并不能回答他的问题。即使这本书有一个详细的例子,确切地说明了如何解决这个问题?你不可能是认真的。是的,他是认真的。你可以把它作为一个评论发布。指着一本书说读它不是答案。这几乎等同于让他用谷歌搜索它。如果你要发布答案,你至少可以提供一个例子。否则,将其保留为注释。尽管如此,这是一个很好的资源。我从头到尾读了这本书,在第477页的章节中有一个很好的使用向导的例子13@Chevex-谢谢,伙计。我试图找到他在里面处理巫师的地方,但是找不到。