4

我正在 razor 中创建一个 2 页的注册过程。这里的困难是在第一页上收集数据(用户名、密码等)并使用隐藏的输入变量将第一页的数据存储在第二页上。

这是我的隐藏代码:

<div id="hidden vals" style="display:none;">
    @Html.HiddenFor(model => model.userRegisterModel.UserName)
    @Html.HiddenFor(model => model.userRegisterModel.studentFirstName)
    @Html.HiddenFor(model => model.userRegisterModel.studentlastName)
    @Html.HiddenFor(model => model.userRegisterModel.Email)
    @Html.PasswordFor(model => model.userRegisterModel.Password)
    @Html.PasswordFor(model => model.userRegisterModel.ConfirmPassword)

</div>

挑战在于密码和确认密码。我不想使用密码类型的隐藏字段,但我希望我的密码保留但不在页面源中显示。但是“PasswordFor”有一个附带问题,它会“减少”值并使用户重新填充。

所以要重新声明,我需要我的密码并确认持久,最好不要向用户显示。重要的是,我需要我的密码并确认未从“查看源代码”中隐藏的值

我的替代策略是使用会话变量来存储所有“第 1 页值”,但这还有其他一些我希望避免的陷阱。

4

2 回答 2

2

我可以建议一种不同的方法吗?而不是两页,使用两个DIV。

您仍然可以利用验证(客户端和远程)之类的东西,并确保用户在没有有效表单的情况下无法前进。如果需要为第二个页面加载和/或创建某些内容,您可以使用 Ajax 执行此操作,并且您的表单仍然可以存在于页面上,而无需使用隐藏字段或会话变量/超时。

<form ...>
  <div id="part-one">
    <!-- content... -->
  </div>

  <div id="part-two" style="display:none;">
    <!-- content... -->
  </div>

  <div>
     <button type="button" id="prev-div">Previous</button>
     <button type="button" id="next-div">Next</button>
     <button disabled="disabled" id="next-div">Submit</button>
  </div>
</form>

按钮保持可见,您可以使用 jQuery 切换它们的状态,如果您的需求更改了对模型类和视图的更新(如果您正在使用模型绑定)。

于 2012-09-14T14:58:19.463 回答
1

是的。将它们保留在 Session 中并在第二页/操作方法中访问它。

确保在读取该特定 Session 变量以进行持久存储后清除该变量。

于 2012-09-14T13:51:03.077 回答