Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC从div弹出窗口提交_Asp.net Mvc_Authentication - Fatal编程技术网

Asp.net mvc MVC从div弹出窗口提交

Asp.net mvc MVC从div弹出窗口提交,asp.net-mvc,authentication,Asp.net Mvc,Authentication,我对MVC开发相当陌生 我有一个名为“Usercontroller”的控制器来管理登录、忘记密码和注册。 我已经添加了HttpGet、HttpPost方法来登录。HttpPost SignIn方法是带有“Model.User”的SignIn函数的重载。 我也有一个“忘记密码”的方法。(发送电子邮件) 忘记密码是一个div弹出窗口,具有“发送链接”功能。 如果我点击“发送链接”,它也会点击用户控制器中的“登录”方法。 需要识别这个并调用“忘记密码”方法。我该怎么做?还是有更好的方法来实现忘记密码?

我对MVC开发相当陌生

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

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

UserController
中创建一个名为
AuthenticateUser()的私有方法


然后,登录和放弃密码操作将调用
AuthenticateUser()
,然后再执行其余逻辑

UserController
中创建一个名为
AuthenticateUser()的私有方法


然后,登录和放弃密码操作将在执行其余逻辑之前调用
AuthenticateUser()
如果您在点击“/User/ForgotPassword”url时一直被重定向到sign()操作,那么放弃密码操作很可能是在请求身份验证,并且由于用户未经身份验证,它会将它们重定向到登录页面

尝试将以下内容添加到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>


虽然,这只是猜测您的问题所在。

如果您在点击“/User/ForgotPassword”url时一直被重定向到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>


虽然,这只是猜测您的问题可能是什么。

我想您想知道,按下了哪个按钮,下面的代码为您提供了此问题的解决方案:

给按钮起相同的名字

查看:

 <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语句处理按钮值,因此您可以判断单击了哪个按钮。

我想您想知道,哪个按钮被按下,以下代码为您提供了此问题的解决方案:

给按钮起相同的名字

查看:

 <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语句处理按钮值,因此您可以判断单击了哪个按钮。

我们为所有页面采用了一种解决方案,该解决方案要求每个表单有多个提交按钮,适用于您的情况(已在登录和其他senarios中使用)。我在这里概述了它以及一个代码示例:


在您的情况下,由于您使用的是弹出窗口,您可能需要使用javascript使弹出按钮调用原始表单中包含的隐藏提交按钮,具体取决于您打开对话框的方式。

我们为所有页面采用了一种解决方案,该解决方案要求每个表单具有多个提交按钮,这在您的情况下适用(在登录和其他senarios中都使用了它)。我在这里概述了它以及一个代码示例:


在您的情况下,由于您使用的是弹出窗口,您可能需要使用javascript使弹出按钮调用原始表单中包含的隐藏提交按钮,具体取决于您打开对话框的方式。

您可以在此处输入“忘记密码”屏幕截图(或HTML代码)吗?您可以输入“忘记密码”屏幕截图(或HTML代码)吗这里?如何区分此呼叫是来自“登录提交”还是“忘记密码提交”?@Dhanuka777看看我的答案,为了区分哪个按钮被点击了。@Dhanuka777-Max的答案会起作用,我以为你在发送登录按钮到登录操作,而忘记了密码按钮放弃了密码操作,保持这些操作分开,但共享相同的身份验证功能。我会这样做的无论如何,我如何区分此呼叫是来自“登录提交”还是“忘记密码提交”?@Dhanuka777看看我的答案,为了区分哪个按钮被点击了。@Dhanuka777-Max的答案会起作用,我以为你在发送登录按钮到登录操作,而忘记了密码按钮放弃了密码操作,保持这些操作分开,但共享相同的身份验证功能。我会这样做的无论如何