2010-02-14 6 views
0

Новое в MVC здесь, я хотел бы иметь окно входа в систему, работающее в диалоговом окне jquery через сайт, помещая его на главную страницу.ASP.NET MVC 2 jquery dialog postback issue

Я завернул форму Logon.aspx с диалоговым DIV и добавил кнопку, чтобы открыть диалоговое окно и некоторые JQ

<button id="show-sign-in">Sign In</button> 
<script type="text/javascript"> 
$(function() { 
$("#dialog").dialog({ 
bgiframe: true, 
autoOpen: false, 
modal: true 
}); 
$('#show-sign-in').click(function() { 
$('#dialog').dialog('open'); 
}); 
</script> 
<div id="dialog" title="User Login">...</div> 

Проблемы:

  1. , если я включаю страницу в мастер с RenderPartial, ActionResult контроллера не поймает submit, если у него нет/url.

    Html.RenderPartial ("~/Views/Account/LogOn.aspx");

  2. Если я включаю его с помощью запроса Ajax (ниже), передача проходит через штраф, однако, если попытка входа недействительна, страница перенаправляется на фактическую страницу LogOn (я хотел бы вернуть их в диалог).

    <script type="text/javascript"> 
    $(document).ready(function() { 
        $.ajax({ 
         url: "/Account/LogOn", 
         cache: false, 
         success: function (html) { 
          $("#logindisplay").append(html); 
         } 
        }); 
    });</script> 
    

Нижняя линия, это то, что я сделал много с ASCX в веб-формах, и я нахожу это раздражает, чтобы пройти через AJAX получает и много JS, чтобы сделать то же самое, я я приближается это полностью неправильно? есть идеи?

ответ

0

Мне немного сложно понять, что именно вы хотите сделать, но если все, что вам нужно, это модальное диалоговое окно для входа в систему, то оно должно работать нормально, если вы добавите некоторые параметры запроса для ваших AJAX GET и POST, как "? модальный = истина". Потому что это то, что вы хотите - вы хотите, чтобы ваша форма входа в систему работала традиционно и через модальный диалог. И, работая через модальный диалог, он должен также переносить на модальные, например,/Account/LogOn /? Modal = true.

Также, когда вы входите в систему с использованием аутентификации ASP.NET Forms, я не думаю, что вы можете сделать это без обратной передачи. Поэтому, даже если вы используете модальный диалог, после его закрытия вам все равно нужно обновить страницу.

По крайней мере, как мои текущие проекты это делает ..

+0

Позвольте мне объяснить настройку и проблему снова. У меня есть ascx в моем хозяине с диалоговом окне JQ, который открывается onclick, он загружает форму входа (тот, который поставляется с MVC) в диалоговом окне, чтобы он попадал в LogOn ActionResult в контроллере учетной записи на submit. Моя проблема заключается в том, что возврат в случае недопустимого входа - это вид(); которая на самом деле является страницей/Account/LogOn, как ее изменить, чтобы исходная страница загружалась с открытым диалогом (результаты ошибок будут отображаться в его ValidationSummary)?В webforms я просто установил панель обновления вокруг формы, но, если я не пропустил что-то, нет частичной визуализации страницы. – saarpa

+0

Есть RenderPartial и RenderAction, которые могут помочь. – mare

1

Вы пытались переместить Logon.aspx в общей папке? Вот где это должно быть, если вы ожидаете поделиться просмотром нескольких контроллеров? Если вы отдаете его частично, он должен также выводиться из ViewUserControl вместо стандартного ViewPage. Вам также может потребоваться обновить сигнатуру BeginForm по умолчанию, чтобы указать, что ей нужно перейти к контроллеру учетной записи и действию входа в систему, так как вы больше не выполняете ее непосредственно из самого действия LogOn().

Один из способов структурирования этого состоит в том, чтобы иметь вид LogOn, который отображает вашу частную (общую) регистрационную форму (LogonForm.ascx). Когда запрос на вход поступает через запрос AJAX, просто отрисуйте форму частично. Если это происходит из обычного запроса, отрисуйте весь вид. Ваша форма должна указывать, что она явно помещается в действие учетной записи/входа в систему.