Как проверить модель в диалоговом окне, созданном JQuery, и Ajax - PullRequest
1 голос
/ 02 августа 2011

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

function createEditorDialog() {
    $('#floatsam_editor').dialog({ bgiframe: true, autoOpen: false, modal: true, width: 512,
        buttons: {
            'Close': function () { $('#floatsam_editor').dialog('close'); },
            'Create': function () {
                $('#flotsam_form').submit();
                $('#floatsam_editor').dialog('close');
            }
        }
    });
};

Таким образом, красный текст появляется при отправке, но сразу после него закрывается, даже если проверка не удалась.

Здесь показана часть формы начала ajax

<div id="floatsam_editor">
@using (Ajax.BeginForm("CreateFlotsam" , "Flotsam", new { }, new AjaxOptions { HttpMethod = "Post", OnSuccess = "systematic_flotsam.successRequest" }, new { Id = "flotsam_form" }))
{
    <div>
        <fieldset>
            <legend>Create Log Entries</legend>
            <div >
                <span class="editor-label">
                        @Html.LabelFor(m => m.Received.Date)
                    </span>
                    <span class="editor-field">
                        @Html.TextBoxFor(m => m.Received.Date, new { id = "flotsam_date", @class="datepicker", maxlength="10"})
                    </span>
                    <span class="editor-field">
                        @Html.TextBoxFor(m => m.Received.Hour, new { id = "flotsam_hours", maxlength="2" })
                    </span>:<span class="editor-field">
                        @Html.TextBoxFor(m => m.Received.Minute, new { id = "flotsam_minutes", maxlength="2"})
                    </span>
                    <span>
                        @Html.ValidationMessageFor(m => m.Received.Date)
                        @Html.ValidationMessageFor(m => m.Received.Hour)
                        @Html.ValidationMessageFor(m => m.Received.Minute)
                    </span>
                </div>

            <div>
                <div class="editor-label">
                    @Html.LabelFor(m =>m.Flotsam.Informant)
                </div>
                <div class="editor-field">
                    @Html.TextBoxFor(m => m.Flotsam.Informant, new { @class = "flotsam_dialog_editor_field" })
                    @Html.ValidationMessageFor(m =>m.Flotsam.Informant)
                </div>
            </div>

Часть моей модели здесь

        [DisplayName("Informant:")]
    [Required]
    public object Informant { get; set; }

    [DisplayName("Flotsam Nature:")]
    [Required]
    public object FlotsamNature { get; set; }

    [DisplayName("Position of Loss:")]
    [Required]
    public object Position { get; set; }

И, как видно, у него есть 3 свойства, которые требуются, но, опять же, он все равно закрывается, если я ничего не ввожу в форму ajax

Так как же сделать диалоговое окно не закрытым, если проверка модели не удалась?

Очень важное замечание: все это делается на одном сайте и на стороне клиента, я не хочу перезагружать страницу.

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Закрывать диалог, только если форма действительна.

if($("#flotsam_form").valid())
{
   $('#flotsam_form').submit();
   $('#floatsam_editor').dialog('close');
}

Таким образом, диалоговое окно останется открытым, и появятся ошибки проверки

0 голосов
/ 03 августа 2011

Поскольку это HTML-контент с динамической динамикой, вам необходимо зарегистрировать HTML-код, который вы хотите проверить.Это сообщение в блоге должно помочь вам.

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