ASP.NET MVC 2 JQuery диалоговое сообщение обратной проблемы - PullRequest
0 голосов
/ 14 февраля 2010

Здесь впервые для MVC, я хотел бы, чтобы окно входа работало в диалоговом окне jquery на всем сайте, поместив его на главную страницу.

Я обернул форму 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 контроллера не будет перехватывать отправку, если в URL нет / Account.

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

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

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

В итоге, это то, что я много сделал с ascx в веб-формах, и я нахожу раздражающим проход через ajax get и множество js, чтобы делать то же самое, я подхожу к этому совершенно неправильно? есть идеи?

Ответы [ 2 ]

1 голос
/ 16 февраля 2010

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

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

0 голосов
/ 14 февраля 2010

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

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

По крайней мере, так поступают мои текущие проекты ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...