2013-12-12 2 views
2

Публикация формы из .cshtml. Если текстовое поле электронной почты имеет значение «Администратор», а текстовое поле «Пароль» имеет значение «12345», я хочу включить событие onclick на кнопку «Отправить».MVC Form Submit Button будет условно иметь событие OnClick

Я подумал о том, если/иначе блок, но что место в если условия ниже, где вы видите знак вопроса (?):

<form class="fvalidate" action="/entry" method="post"> 
    <input type="text" name="Email" class="email required"/> 
    <input type="password" name="Sifre" class="required" /> 
    @if (?) 
    { 
      <input type="submit" value="LOG IN" class="mTop15" 
      onclick="ibFunc.openBoxOpen('/entry/adv'); return false;" /> 
    } 
    else 
    { 
     <input type="submit" value="LOG IN" class="mTop15" /> 
    } 
</form> 

Как я мог это сделать?

+0

«@ if» - это код Razor, поэтому он запускается на сервере, когда форма отображается на странице: вы можете в конечном итоге проверить свойства модели в том, что ... Если вы хотите проверить значения, которые пользователь (поскольку вы сказали «размещение»), то что-то должно произойти и в контроллере. Что именно ты пытаешься сделать? – Tallmaris

+0

Форма отправляется в ActionMethod под названием «index» под контроллером «entry». Если «admin» входит в систему, я хочу отправить форму другому методу действия, называемому adv под тем же контроллером, и вызвать функцию javascript «ibFunc.openBoxOpen». – Jude

+0

@Roman Помимо вызова функции «ibFunc.openBoxOpen()« javascript, она отлично работает. Не могли бы вы обновить его и отправить свой ответ, пожалуйста? – Jude

ответ

2

Вы должны понимать поток приложения и какие пожары, когда. Кажется, вы смешиваете технологию «Клиент» и «Сервер».

Поток должен быть

  • Шаг 1 Отправить форму
  • Шаг 2 Контроллер проверяет логин и работает ли они администратором или нет.
  • Шаг 3 Контроллер перенаправляет пользователя на страницу /entry или /entry/adv в зависимости от того, являются ли они администратор или нет
  • Шаг 4 На странице /entry не сгореть яваскрипта
  • Шаг 4а На странице /entry/adv пожара javascript

Чтобы ответить на ваш вопрос напрямую. Нет ничего, что можно поставить вместо ?, который будет делать то, что вы хотите, потому что это код Razor, который выполняется на сервере до того, как пользователь взаимодействует со страницей.

+0

Если сообщение электронной почты в текстовом поле «[email protected]», все, что я упоминаю, произойдет. Что это за азадмин? – Jude

+0

Кажется, вы пытаетесь использовать код Razor для изменения страницы, но в момент загрузки страницы вы не знаете, кто будет входить в систему, поэтому вы не можете использовать Razor (serveride code), чтобы изменить поведение страницы.Вы можете использовать javascript, но это может быть не очень безопасно. Я предлагаю вам использовать решение, предлагаемое @theLaw, и перенаправление на другую страницу после того, как вы проверили пользователя и знаете, кто они. –

+0

Да, но @theLaw говорит мне вызывать функцию js из метода действия. Не могли бы вы привести пример? Я не знаю, как – Jude

0

ли контроль в POST в контроллере, когда «Admin» отправить форму сделать, если затем использовать

return RedirectToAction("adv", "entry"); 
+0

Как вызвать функцию «jbs» ibFunc.openBoxOpen()? – Jude

+0

вы вызовете функцию js на GET действия adv – theLaw

+1

Что делает эта функция? Вам нужно провести различие между клиентской стороной (javascript) и сервером (asp.net mvc). Когда вы отправляете форму, вы будете отправлять данные на сервер, где она будет проверена, а затем отправит вас в другое место. Когда вы приедете на новую страницу, если вам нужно запустить какой-то скрипт, вам нужно разобраться, как вы хотите это сделать. –