2013-12-06 4 views
0

Я довольно новичок в разработке MVC.MVC submit from div pop up

У меня есть контроллер под названием «Usercontroller» для управления SignIn, Забыли пароль и регистрацию. Я добавил методы HttpGet, HttpPost для входа в систему. HttpPost SignIn метод - это перегрузка функции SignIn с помощью «Model.User». У меня есть метод «Забыли пароль». (Отправить электронное письмо).

Forgot Password - это всплывающее окно с функцией «Отправить ссылку». Если я нажму «Отправить ссылку», он также попадет в «SignIn» в пользовательском контроллере. Необходимо определить это и вызвать метод «Забыли пароль». Как я могу это сделать? Или есть лучший способ реализовать забытый пароль?

+0

Не могли бы вы разместите здесь скриншот «Забыли пароль» (или HTML-код)? – Haritha

ответ

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 управляет значениями кнопок, поэтому вы можете указать, какая кнопка была нажата.

1

сделать частный метод в UserController называется AuthenticateUser()

Тогда Войти и ForgotPassword Действия позвонит AuthenticateUser() перед выполнением остальной части их логик

+0

Как я могу отличить, идет ли этот вызов от «Войти в систему» ​​или «Забыл пароль»? – Dhanuka777

+0

@ Dhanuka777 Посмотрите на мой ответ, чтобы различить, какая кнопка была нажата. – Max

+0

@ Dhanuka777 - Этот ответ от Max будет работать, я думал, что вы отправляете кнопку Login на кнопку «Вход в систему» ​​и «Забыл пароль» на «ForgotPasswordAction», сохраняя эти действия отдельно, но используя одну и ту же функцию проверки подлинности. Так или иначе я это сделаю. –

1

Если вы продолжаете получать перенаправлены на зарегистрировался() действия при ударе вашего '/User/ForgotPassword ', то, скорее всего, действие 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> 

Хотя , это всего лишь догадка о вашей проблеме.

1

Мы приняли решение для всех страниц, для которых требуется наличие нескольких кнопок отправки для каждой формы, которые будут применимы в вашем случае (использовали его как в логине, так и в других сенариях). Я обрисовал его вместе с кодом примером здесь:

How to use ajax link instead of submit button for form?

В вашем случае, поскольку вы используете всплывающие окна вы можете использовать JavaScript, чтобы кнопка всплывающего меню скрытой кнопки отправить включена в первоначальной форме в зависимости от того, как вы открываете диалог.