我在ASP.NET中实现自己的重置密码。在重置密码时,首先我创建一个随机字符串并将其邮寄给用户email。对于像http://xyz.com/account/forgot?random=xxxx&userid=xx.I这样的电子邮件中的链接创建了一个httpget类型操作忘了哪个show返回一个带有密码输入标签的视图如果验证了randomid和userid 。 但是在httppost类型的忘记中,我对参数感到困惑。 我忘记了模型有2个属性密码和confirmmpassword。如果我只是将forgetmodel传递给httppost动作,那么我无法从数据库查询用户。我想我应该将randomId作为参数传递。但是,我正在获取如何从httpget动作的url中获取randomID (如果我这样做,是否安全?)? 请指导我,我卡住了.. 提前致谢
答案 0 :(得分:1)
您使用的是Html.BeginForm(“action”,“controller”),如果是这样,那么您将丢失查询字符串参数。由于ForGotPassword(..)的HttpGet和HttpPost方法具有相同的动作名称,您可以使用Html.BeginForm()。 因此,表单会将数据发布到页面网址,您将获得查询字符串。
在你的http post方法中,你可以定义如,
[HttpPost]
public ActionResult ForGot(ForgotModel model, string random,strung userid)
{
:
:
}
如果您不想按照上述方法,那么在httpget方法中写入ViewBag / ViewData并将它们作为隐藏字段放入视图中。然后,您可以将它们作为Method的输入接收。
[HttpGet]
public ActionResult ForGot(string random,strung userid)
{
ViewBag.Random =random;
Viewbag.Userid =userid;
:
:
}
[HttpPost]
public ActionResult ForGot(ForgotModel model, string random,strung userid)
{
:
:
}
和,在视图中
@Html.BeginForm("ForGot","Account"){
:
@Html.Hidden(ViewBag.Random)
@Html.Hidden(ViewBag.Userid)
:
}