javascript - 单击按钮时运行 Controller 方法 MVC4 C#

标签 javascript c# jquery ajax asp.net-mvc-4

我正在使用 Visual Studio 2013、MVC4 和 C# 制作一个简单的应用程序。此 Web 应用程序有一个带有多个复选框的表格,并且默认情况下禁用“更新”按钮。当单击一个或多个复选框时,我会激活该按钮。

这里的想法是,当单击“更新”按钮时,将复选框的所有信息(哪些是打开或关闭)发送到服务器,然后将这些更改保存在数据库中。

为了实现这一点,我尝试通过 jquery 使用 ajax,但不幸的是我没有成功,因为当我单击按钮时什么也没有发生。

这是我用来为客户端生成 View 的 cshtml 文件:

<input type="submit" value="Save Checkbox Changes" class="btn btn-primary disabled" id="SaveCheckboxChanges" />

<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.RequiresSetup)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Disabled)
        </th>
    </tr>

    @{
        foreach (var item in Model)
        {

            <tr>
                <td>
                    @Html.EditorFor(modelItem => item.RequiresSetup)
                </td>
                <td>
                    @Html.EditorFor(modelItem => item.Disabled)
                </td>
            </tr>
        }
}
</table>

按钮 SaveCheckboxChanges 的 JavaScript 代码如下:

$("#SaveCheckboxChanges").click(function (event) {
        if (!$("#SaveCheckboxChanges").hasClass("disabled")) {

            $.ajax({
                url: '/Material/UpdateCheckBoxes',
                type: 'POST',
                data: {bla: "bdsjdnjsdnsnd"

                },
                contentType: 'application/json; charset=utf-8',
                success: function (data) {
                    alert(data.success);
                },
                error: function () {
                    alert("error");
                }
            });
        }

    });

在我的 Material Controller 中,我有以下内容:

[HttpPost]
public ActionResult UpdateCheckBoxes(string bla)
{
    return Content("Working!" +  bla);
}

我期望的是,单击按钮后,页面会显示“Working”字符串,这意味着 Controller 中的函数已正确执行。

但是,这并没有发生,我看到的只是 javascript 警报说“错误”。

我怎样才能让这个ajax请求起作用?我错过了什么?

最佳答案

您的 Controller 方法不返回任何内容...

将其转换为以下内容::

public String Material()
{
    return "Working!";
}

关于javascript - 单击按钮时运行 Controller 方法 MVC4 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26784634/

相关文章:

javascript - 单击提交按钮时,如何使用 JQuery Validate 创建一个包含所有表单错误的弹出窗口?

javascript - 如何在文本区域内预格式化

c# - XML 序列化的替代

javascript - Jquery post > 成功不触发

c# - SQL 连接错误 - C#

C# Roslyn 编译 - 在动态编译的代码中使用 Nuget 包 - 编译但在运行时抛出异常(无法加载文件或程序集)

php - TinyMCE Editor - 如何集成自定义滚动条

javascript - 为什么编辑CSS文件不会像JS一样自动实时更新?

javascript - 如何从对象名称获取数组位置?

javascript - 使用 Moment.js 根据时间间隔计算 nextDueDate