MVC从div弹出提交

时间:2013-12-06 07:04:51

标签: asp.net-mvc authentication

我对MVC开发还不熟悉。

我有一个名为“Usercontroller”的控制器来管理SignIn,忘记密码和注册。 我已经为SignIn添加了HttpGet,HttpPost方法。 HttpPost SignIn方法是具有“Model.User”的SignIn函数的重载。 我也有一个“忘记密码”方法。 (发送电子邮件)。

忘记密码是一个div弹出窗口,它具有“发送链接”功能。 如果我点击“发送链接”,它也会点击用户控制器中的“SignIn”方法。 需要识别此并调用“忘记密码”方法。我怎样才能做到这一点?或者有更好的方法来实现忘记密码吗?

4 个答案:

答案 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让弹出按钮调用原始表单中包含的隐藏提交按钮,具体取决于您打开对话框的方式。