2016-11-04 6 views
0

У меня есть функция сброса пароля для моего проекта. Я посылаю ссылку на пользователя с помощью токена. После того, как они нажмут на ссылку, мне нужно зайти в мой HomeController и запустить метод ResetPassword. Моя проблема заключается в том, что я не уверен, где я должен поместить ResetPassword Partial View (то есть модальный), где бы я ни сказал, он вводит, когда я открываю страницу входа.Где я должен поместить свой Partial View

считает эту ссылку в адресах электронной почты пользователя:

http://...myurlaction=resetpassword&userid=5&[email protected]&token=1234564

при нажатии на нее, мне нужно идти к этому методу:

первым должен получить метод:

[HttpGet] 
[Route("resetpassword")] 
[AllowAnonymous] 
public ActionResult ResetPassword(ResetPasswordRequest resetPasswordRequest) 
{ 
    //check if Token is valid show the view 
    return PartialView(); 
} 

после поста, перейти к POST метод:

[HttpPost] 
[Route("resetpassword")] 
public ActionResult ResetPassword(ResetPasswordView resetPasswordView) 
{ 
    return PartialView(); 
} 

и это частичный вид:

<div id="myModal" class="modal"> 
<div class="modal-content"> 
    <span class="close">x</span> 
    @using (Html.BeginForm("resetpassword", "Home", FormMethod.Post)) 
    { 
     <h5>Reset Your Loan Center Password</h5> 
     <table> 
      <tr><td>Email Address</td><td><input type="email" name="Email" placeholder="[email protected]"></td></tr> 
      <tr><td>Password</td><td><input type="Password" name="Password" placeholder="Create Password"></td></tr> 
      <tr><td>Confirm Password</td><td><input type="Password" name="ConfirmPassword" placeholder="Re-enter Password"></td></tr> 
      <tr><td colspan="2"><input type="submit" value="Reset Password"></td></tr> 
      <tr> 
       <td class="errMessage" colspan="2"> 
        @Html.ValidationSummary(true) 
       </td> 
      </tr> 
     </table> 
    } 
</div> 

Моя проблема заключается в том, что я не знаю, где я должен иметь @Html.Partial("Login") , потому что где-нибудь у меня есть это показать сброса пароля вид, даже если я дон Не нужно это показывать.

+0

Вы POST также требует '[AllowAnonymous]' - пользователь еще не разрешено (и они не должны иметь такую ​​же подпись) –

+0

@Stephen Muecke, дело в том, что идет к сообщению после того, как я введите значения в поле зрения, но он не подходит для получения. – Alma

ответ

1

Основываясь на вашем описании, я предполагаю, что вы используете PartialView, потому что хотите повторно использовать код страницы Login. В основном, ваша страница Login имеет 2 состояния: один для входа и другой для сброса пароля. Чтобы узнать, какие состояния активации, вы должны иметь флаг в вашей Login страницы, что-то вроде:

@if (Viewbag["state"] == "Login") { 
    Html.RenderPartial("Login"); 
} else { 
    Html.RenderPartial("resetpassword"); 
} 

Тогда, что вы должны сделать, это установить соответствующее значение Viewbag на вашем LoginController и ResetPasswordController, как это :

[HttpGet] 
[Route("resetpassword")] 
[AllowAnonymous] 
public ActionResult ResetPassword(ResetPasswordRequest resetPasswordRequest) 
{ 
    //check if Token is valid show the view 
    Viewbag["state"] = "ResetPassword"; 
    return YourLoginPage(); 
} 
метод
0

Если я правильно понял ваш вопрос, частичный вид должен быть в папке Views \ Home приложения, поскольку вы вызываете частичную часть из вашего Home Controller. В качестве предположения, возможно, вы можете перенести свой метод действий на контроллер учетной записи, так как строго говоря, переиздание пароля - это скорее функция «Учетная запись», чем то, что находится в вашем домашнем контроллере. В этом случае ваше частичное представление будет добавлено в Views \ Account.

+0

Я имею в виду, где мне нужно поставить @ Html.Partial ("resetpassword") – Alma

Смежные вопросы