Не вызывается метод контроллера

248
28 апреля 2017, 20:09

Модель

public class Checklist
{
    public int Id { get; set; }
    public Check Check { get; set; }
    public List<Check> Checks { get; set; }
}
public class Check
{
    public int Id { get; set; }
    public string Value { get; set; }
} 

Метод контроллера ChecklistsController.cs

[HttpPost]
public ActionResult GenerateChecks(Checklist checklist)
{
    if (Request.IsAjaxRequest())
    {
        Check check = new Check();
        check.Value = checklist.Check.Value;
        if (checklist.Checks == null)
        {
            checklist.Checks = new List<Check>();
        }
        checklist.Checks.Add(check);
        return PartialView("_checklist", checklist);
    }
    return PartialView("_checklist", checklist);
}

Представление Create.cshtml

<script src="@Url.Content("~/Scripts/add_check.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <h4>New Checklist</h4>
    <table class="table table-bordered" id="tableCheck">
        <tr><th>Checks</th></tr>
        <tbody></tbody>
    </table>
    <input type="button" value="Add" class="btn btn-default" id="addCheck" />
    <input type="submit" value="Create" class="btn btn-primary" />
}

add_check.js

$(function () {
    $("#addCheck").click(function () {
        $.ajax({
            type: "POST",
            url: 'Checklists/GenerateChecks',
            data: form.serialize()
        })
        .success(function (html) {
            var tableBody = document.getElementById('tableCheck').getElementsByTagName('tbody')[0];
            tableBody.text(html);
        })
        .error(function (msg) {
            console.log(msg);
        });
    });
});

Частичное представление _checklist.cshtml

@model TestManagementTools.Models.Checklist
@for (int i = 0; i < Model.Checks.Count; i++)
{
    <tr>
        <td>
            @Html.TextBoxFor(model => model.Checks[i].Value, new { @class = "form-control" })
        </td>
    </tr>
}
Answer 1

http://api.jquery.com/jquery.ajax/

Не знаю, какой версией jQuery Вы пользуетесь, но jqXHR.success() и jqXHR.error() устарели и убраны в версии 3.

Используйте:

    $.ajax({
        type: "POST",
        url: 'Checklists/GenerateChecks',
        data: $(this).closest("form").serialize(), // !!!
        success: function (html) {
          $('#tableCheck tbody').html(html);
        },
        error: function (msg) {
          console.log(msg);
        }
    });
READ ALSO
Запуск программы

Запуск программы

Киньте пример пожалуйста, как запустить программу на клиентской машине используя javascript, и вообще можно ли так??? вроде телеграмм таким образом...

222
ротация трёх баннеров

ротация трёх баннеров

Нужно сделать на сайте ротацию трёх баннеров:

245
Динамически менять код переменной PHP

Динамически менять код переменной PHP

Задача такая: необходимо менять значение переменных при перезагрузке фреймаПеременные:

272