我对MVC开发还不熟悉。
我有一个名为“Usercontroller”的控制器来管理SignIn,忘记密码和注册。 我已经为SignIn添加了HttpGet,HttpPost方法。 HttpPost SignIn方法是具有“Model.User”的SignIn函数的重载。 我也有一个“忘记密码”方法。 (发送电子邮件)。
忘记密码是一个div弹出窗口,它具有“发送链接”功能。 如果我点击“发送链接”,它也会点击用户控制器中的“SignIn”方法。 需要识别此并调用“忘记密码”方法。我怎样才能做到这一点?或者有更好的方法来实现忘记密码吗?
答案 0 :(得分:1)
在名为UserController
AuthenticateUser()
中创建私有方法
然后logIn和ForgotPassword Actions会在执行其余逻辑之前调用AuthenticateUser()
答案 1 :(得分:1)
如果您在点击“/ User / ForgotPassword”网址时不断重定向到SignIn()操作,则很可能ForgotPassword操作正在请求身份验证,并且由于用户未经过身份验证,因此会将其重定向到登录页。
尝试将以下内容添加到您的web.config中:
<location path="User/ForgotPassword">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
您可以将它放在'system.web'节点的结束标记之下,例如:
<system.web>
<authentication mode="Forms">
<forms name="YourCookieName" loginUrl="/User/SignIn" path="/" domain="" timeout="40320" slidingExpiration="true"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<!-- the rest of your system.web config in here -->
</system.web>
<location path="User/ForgotPassword">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
虽然,这只是猜测你的问题。
答案 2 :(得分:1)
我想您想知道,按下了哪个按钮,下面的代码为您提供了解决此问题的方法:
为按钮指定相同的名称
查看:强>
<input type="submit" id="btn1" name="btnSubmit" value="Login" />
<input type="submit" id="btn2" name="btnSubmit" value="Forgot Password" />
<强>控制器:强>
[HttpPost]
public ActionResult ReturnFunction(Model model, string btnSubmit)
{
switch (btnSubmit) {
case "Login":
//Code for checking credentials here
break;
case "Forgot Password":
//Code retrieving password here
break;
}
switch语句处理按钮值,因此您可以判断单击了哪个按钮。
答案 3 :(得分:1)
我们已经为所有页面采用了一个解决方案,这些页面需要在每个表单中都有多个提交按钮,这些按钮适用于您的情况(已在登录以及其他senarios中使用过)。我在这里概述了它和代码示例:
How to use ajax link instead of submit button for form?
在您使用弹出窗口的情况下,您可能必须使用javascript让弹出按钮调用原始表单中包含的隐藏提交按钮,具体取决于您打开对话框的方式。