Проверить модальную форму

Я пытаюсь открыть форму, чтобы пользователь заполнил ее, а затем сохранил эту запись. Если данные неверны, я хочу сообщить пользователю об классической проблеме проверки.

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

так что я делаю неправильно?

Это моя модальная форма:

введите здесь описание изображения

И после проверки все, что я получаю, это:

введите здесь описание изображения

Код: Модель:

public class Car
{
    public int Id { get; set; }

    [Required]
    [StringLength(50, MinimumLength = 6)]
    public string Model { get; set; }
    public string Brand { get; set; }
    public string Year { get; set; }
    public string Color { get; set; }
}

Вид:

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
            <h4 class="modal-title" id="myModalLabel">Add Car</h4>
        </div>
        <div class="modal-body">
            @Html.Partial("CreatePartialView",new Car())
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            <button type="button" class="btn btn-primary" id="savechanges">Save changes</button>
        </div>
    </div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->

мой частичный:

@model ControliBootstrap.Models.Car

@using (Ajax.BeginForm("ModalAdd", "Cars",new AjaxOptions()
{
UpdateTargetId = "mymodalform"
}))
{
<div class="form-horizontal" id="mymodalform">
    @Html.ValidationSummary(true)

    <div class="form-group">
        @Html.LabelFor(model => model.Model, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Model)
            @Html.ValidationMessageFor(model => model.Model)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Brand, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Brand)
            @Html.ValidationMessageFor(model => model.Brand)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Year, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Year)
            @Html.ValidationMessageFor(model => model.Year)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Color, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Color)
            @Html.ValidationMessageFor(model => model.Color)
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>
</div>
}

и, наконец, мой контроллер:

 public ActionResult ModalAdd(Car car)
    {
        if (ModelState.IsValid)
        {
            db.Cars.Add(car);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return PartialView("CreatePartialView",car);
    }  

person bto.rdz    schedule 31.12.2013    source источник
comment
Вы точно включили jQuery ненавязчивый AJAX?   -  person Rowan Freeman    schedule 31.12.2013
comment
Я f * дебил, большое спасибо, что решил проблему   -  person bto.rdz    schedule 31.12.2013
comment
Я опубликую это как ответ для дальнейшего использования.   -  person Rowan Freeman    schedule 31.12.2013


Ответы (1)


Не забудьте включить jQuery Unobtrusive AJAX — это библиотека, которая делает HTML-формы имеют некоторые возможности AJAX.

person Rowan Freeman    schedule 31.12.2013
comment
Знаете ли вы, почему мой вызов ajax перестает работать после первого раза? Если я устанавливаю замену в качестве метода вставки, моя новая кнопка делает точно такую ​​​​же ошибку, что и раньше, Затем я устанавливаю addafter в качестве метода вставки, и работает только первая кнопка, все те, кто был вставлен после, перенаправляют меня на ошибку, которую я сделал раньше - person bto.rdz; 31.12.2013
comment
Партиал включает в себя форму. Это означает, что когда происходит замена, форма помещается в форму, которая не является допустимым HTML. Попробуйте поместить id в div, который оборачивает форму. - person Rowan Freeman; 31.12.2013
comment
Еще 1 вопрос, пожалуйста, в моем контроллере, когда модель недействительна, я получаю представление индекса внутри своего модального окна, как мне его закончить? - person bto.rdz; 31.12.2013
comment
Я не уверен, понимаю ли я вопрос. Возможно, вам придется задать новый вопрос. - person Rowan Freeman; 31.12.2013
comment
Хорошо, я буду, еще раз спасибо за всю вашу помощь - person bto.rdz; 31.12.2013