使用控制器从ASP.net中的按钮单击调用方法

时间:2017-07-02 19:25:02

标签: c# asp.net ajax button controller

是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>
&#13;
&#13;
&#13;

我的控制器

&#13;
&#13;
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");
        }
    }
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

将输入类型更改为提交按钮以避免多次提交。

将控制器方法标记为[HttpPost],然后重试。

如果您想知道为什么要这样做,请阅读:

[HttpPost]属性告诉路由引擎将该操作方法的任何POST请求发送到另一个方法。这是一种重载。

如果您想知道如何将Method标记为[HttpPost]方法,请查看以下内容:

[HttpPost]
public void ClickButton1()
{
    Console.WriteLine("Button 1 Clicked");
}

我希望这会对你有所帮助:)。