我正在使用 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/