【发布时间】:2017-07-02 19:25:01
【问题描述】:
我是 ASP.net 的新手。我试图有一个简单的页面视图,它有一个按钮,当点击时,这将调用一个控制器中的方法,然后用 c# 做更多的代码和计算。
我阅读了帖子并尝试了此方法,但该方法似乎没有被调用,调试器永远不会在 Controler ClickButton1 方法中停止。
我的 VIEW 代码
<div>
<input id="Button1" type="button" value="Button 1" onclick="ClickButton1()" />
<input id="Button2" type="button" value="Button 2" onclick="location.href='@Url.Action("Options", "Home")'" />
</div>
<div>
<canvas id="mapCanvas" width="500" height="150" style="border:1px solid #000000;"></canvas>
</div>
<script>
function ClickButton1() {
$.ajax({
type: "POST",
url: '@Url.Action("ClickButton1", "Definition")',
async: true,
success: function (msg) {
ServiceSucceeded(msg);
},
error: function () {
return "error";
}
});
}
</script>
我的控制器
namespace Traveler.Controllers
{
public class DefinitionController : Controller
{
// GET: /<controller>/
public IActionResult Index()
{
return View();
}
// Action click on Button 1
public void ClickButton1()
{
Console.WriteLine("Button 1 Clicked");
}
}
}
【问题讨论】:
-
ClickButton1是否标记为HttpPost?没有。但是您的 JavaScript 正在尝试向其发布。为什么你在做return "error";而不是收到错误消息?你有没有在网络流量上查看浏览器的开发者工具? -
嗨梅森,使用这篇文章中的代码为另一个似乎拥有相同 pb 的开发人员。我肯定错过了什么。 stackoverflow.com/questions/40928088/…
-
我指出了你在我之前的评论中遗漏的内容。
-
我错过了我必须将按钮标记为“httpPost”吗?不知道如何获取错误消息。
-
我说的是 ClickButton1 和 HttpPost。这并不意味着你的按钮。这意味着你的行动方法。默认情况下,动作方法有 GET 请求,而不是 POST 请求。所以为了让它接收一个 GET 请求,你必须给
ClickButton1添加一个[HttpPost]属性。如果您使用浏览器的开发人员工具查看网络流量,您可能会看到一条错误消息。我建议您学习如何执行此操作,因为您需要知道如何准确查看来自服务器的响应。
标签: c# asp.net ajax button controller